我用C语言写了一个“Hello World”程序。
void main()
{ printf("Hello World"); }
// note that I haven't included any header file
该程序编译时产生警告,错误信息如下:
vikram@vikram-Studio-XPS-1645:~$ gcc hello.c
hello.c: In function ‘main’:
hello.c:2:2: warning: incompatible implicit declaration of built-in function ‘printf’
vikram@vikram-Studio-XPS-1645:~$ ./a.out
Hello Worldvikram@vikram-Studio-XPS-1645:~$
这怎么可能?操作系统如何在不包含任何头文件的情况下链接库?
printf
这样带有可变参数的函数,隐式声明extern int printf();
在C89中甚至是无效的。gcc
可以友善地在c89中进行编译。 - ouah