man ページによると、がstrerror(errnum)
返されますchar *
が、次の警告が表示されます。
gcc temp.c -o temp
temp.c: In function ‘mystrerror’:
temp.c:10:4: warning: return makes pointer from integer without a cast [enabled by default]
で実行するとセグメンテーション違反が発生しますが、で./temp 0
はありません./temp 256
。
誰かがなぜこれが起こるのか、そしてそれを修正する方法を説明できますか (可能であれば)?
temp.c
#include <stdio.h>
#include <errno.h>
char *mystrerror(int errnum)
{
switch (errnum) {
case 256:
return "My test";
default:
return strerror(errnum);
}
}
int main(int argc, char **argv)
{
int err;
if (argc > 1) {
err = atoi(argv[1]);
printf("test error (%d) %s\n", err, mystrerror(err));
}
return 0;
}