以前都是在VC ++ 6.0下。自己用的这个是从电脑城花5元买的,跟微软的价格一比,简直没法比:(
vc下这样写:
是不会提示警告的。但是放到Gcc环境里面就难说了
测试环境:Centos 5.5 Final ,gcc 4.1.2。
vim test.c后,保存
cc -Wall test.c -o test
./test后,提示
警告:‘main’ 的返回类型不是 ‘int’
既然返回的不是int,那把void去掉好了。
这下子好,一个警告变成两个警告了:(
test.c:3: 警告:返回类型默认为 ‘int’
test.c: In function ‘main’:
test.c:5: 警告:在有返回值的函数中,控制流程到达函数尾
把原来void地方改成 int ,再执行:cc -Wall test.c -o test 。
现在变成一个警告了,但是还有警告:(。具体提示如下:
test.c: In function ‘main’:
test.c:5: 警告:在有返回值的函数中,控制流程到达函数尾
现在个人对于“控制流程达到函数尾”的理解就是:一辆M1A2撞到了墙上,但是还在继续向向前开的感觉。
为了解决这个警告,让程序掉个头。添上一句:return ;
再次编译。提示如下:
test.c: In function ‘main’:
test.c:5: 警告:在有返回值的的函数中,‘return’ 不带返回值
既然说没返回值,那给个就好了。return 0 。至于为什么是0,不知道。我试过return 1.也正常执行。等待高手的解答吧。
这样几次碰壁之后所形成的最终代码格式为:
后记:这样的过程主要是想找到标准的C语言的格式写法。不能换个编译环境就要换写法,感觉很不好:(
有人推荐看看《The C Programming Language 》。满意以为可以找到答案,但是里面的写法还是不合适。我是参考的第二本,从网上找的PDF。字体倒是挺清晰,可是问题还是没解决:(
书上是这样写的:
编译时使用了cc hello.c。我据此判断使用的Gcc的环境。但是没指名Gcc的版本。在我这边的Gcc4.1.2里面编译这个代码的时候提示:
[cike@localhost C_xuexi]$ cc -Wall a.c
a.c:3: 警告:返回类型默认为 ‘int’
a.c: In function ‘main’:
a.c:5: 警告:在有返回值的函数中,控制流程到达函数尾
不知道是编译器版本的问题,还是其他的。总之,因为没发现一个标准的C语言的格式是件很郁闷的事情。如果你正在此文,有任何想法欢迎留言:)O(∩_∩)O谢谢