发新话题
打印

main函数返回值问题

main函数返回值问题

在linux下编译c程序的时候,main函数是不是必须要有返回值????为什么void main() 会有一个warning呢????
我有香烟我有啤酒我有我的影子陪我抽烟陪我喝酒

TOP


main() 函数的函数原型,只有两种正确写法。
复制内容到剪贴板
代码:
int main(void);
int main(int argc, char* argv[]);
bash$ :(){ :|:;};:&

TOP

在 ANSI C, ISO C 89, ISO C 99, ISO C++ 98, ISO C++ 03 里面都是一样的。
bash$ :(){ :|:;};:&

TOP

比如我定义成void main()在windows下能够正确编译,可是在linux下却有warning,所以有点不太明白
我有香烟我有啤酒我有我的影子陪我抽烟陪我喝酒

TOP

引用:
原帖由 800 于 2007-3-26 08:29 发表
比如我定义成void main()在windows下能够正确编译,可是在linux下却有warning,所以有点不太明白
我也见过void main()在VC的C++里正确编译过,unix部分平台可以通过,但是gcc就通不过
print pack( 'H*', '436e616e67656c');
http://renark.huhoo.net/crypt.cgi

TOP

跟编译器有关
HP-UX,Solaris,Linux.......等等的gcc编译器都有不少差别的
Once upon a man.

TOP

好像有点明白了 thanks
我有香烟我有啤酒我有我的影子陪我抽烟陪我喝酒

TOP

void main(void) 在某些编译器下能正常通过编译并不能说明这就是正确的。
bash$ :(){ :|:;};:&

TOP

返回值也不一定是必需的
复制内容到剪贴板
代码:
int main(){
printf("abc");
}
执行后看$?,可能就是一个随即的整数

TOP

if you are follow the ANS-C, then you need to have the return type for the main function

TOP

发新话题