这个简单的文件:
#include <unistd.h>
void test() {
char string[40];
gethostname(string,40);
}
......通常汇编成册时,做的是罚款:
$ cc -Wall -c -o tmp.o tmp.c
$
......但如果以C99模式汇编,则发出警告:
$ cc -Wall -std=c99 -c -o tmp.o tmp.c
tmp.c: In function `test :
tmp.c:5: warning: implicit declaration of function `gethostname
$
由此而来的卷宗是罚款,并连接工程。 我只想摆脱警告。 我可以通过把声明放在我自己的档案中以黑客的方式做到这一点。
What is it about C99 that means the declarations in unistd.h don t get included? Can this be overcome, without giving up the niceness of C99?
在其他标准校准方面,我也看到同样的问题。