Этот простой .c файл:
#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'
$
Результирующий файл .o хорош, а ссылки работают. Я просто хотел бы избавиться от предупреждения. Я могу добиться этого в хакерском режиме, разместив объявления в моем собственном файле .h.
Что такое C99, что означает, что объявления в unistd.h не включаются? Можно ли это преодолеть, не отказываясь от достоинства C99?
Я вижу ту же проблему для других стандартных библиотек.