标签:
最近看代码看到一些代码中直接使用了一些函数,但在编译的时候却没有任何错误,非常奇怪。在C语言中不是所有函数在使用之前都应该被定义或声明吗?查查资料发现原来gcc在碰到这种情况的时候会隐式为我们声明一下使用的函数,并且默认情况下,并不会触发警告。比如我们使用了一个未声明的函数hello,gcc会为我们声明一个int hello()。如果加上-Wimplicit选项的话,我们就可以看见隐式声明的警告了:bootmain.c:6:2: warning: implicit declaration of function ‘hello’ [-Wimplicit-function-declaration],或者也可以用c99标准去编译,同样可以看见警告。-Wno-implicit可以关闭警告。
在gas中,我们也可以在未声明的情况下使用symbols,不过gas与gcc不同的是,它将所有未声明的symbols都默认为外部符号。
标签:
原文地址:http://www.cnblogs.com/angwer/p/4299970.html