gccとvs2005で

for(i=0;i<100;i++){
fprintf(stderr, "%s\n", strerror(i));
}

こんなの実行してみて出力結果を眺めていたんですけど、
strerr(17);だと
vs2005 :Block device required
cygwin :Unknown error
でエラー内容が違っていたりします。
別にエラーとして出力される内容が違っているのは問題ないんですが、
c言語では、エラーが起きるかもしれない標準関数を実行し、エラーが
起きた場合のエラー定数ってマクロ定義されていないんでしょうか?
もしも、マクロ定義されている場合、どこを調べるといいんでしょうか?