#include<stdio.h>
struct logrcc{
int date;
int time;
int code;
}
main()
{
printf("Hello world !\n");
}
这段代码,在DEV编译器上不会出错,但在linux上报警告,但是仍然可以运行。刚开始看这段代码时,感觉是错的,但是它绝对是运行通过了,这是c陷阱的分号用法的不规范造成的。因为编译器默认main函数返回值为struct logrcc类型了。
#include<stdio.h>
struct logrcc{
int date;
int time;
int code;
}
myfun()
{
printf("Hello world !\n");
}
int main()
{
myfun();
return 0;
}
如果把代码换成这个这样,我想,错误就会更隐蔽了。他在linux上也不会报错。
详情参考:《C Traps and Pitfalls》【美】Andrew Koenig著。P26