stdlib.H не имеет декларации для putenv
Я попытался скомпилировать следующий код с gcc 4.7.3 и clang 3.2.1 на Ubuntu 13.04 (64-бит):
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
putenv("SDL_VIDEO_CENTERED=1");
return 0;
}
Я ожидал, что putenv будет объявлено в заголовке stdlib.h, но я получаю следующее предупреждение:
test.c: In function ‘main’:
test.c:6:5: warning: implicit declaration of function ‘putenv’ [-Wimplicit-function-declaration]
Почему объявление для этой функции отсутствует в моем заголовке?
1 ответ:
Вы должны определить определенные макросы. Посмотрите на
man 3 putenv:NAME putenv - change or add an environment variable SYNOPSIS #include <stdlib.h> int putenv(char *string); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): putenv(): _SVID_SOURCE || _XOPEN_SOURCEПопробуйте определить либо
_SVID_SOURCE, либо_XOPEN_SOURCEПеред включениемstdlib.h, например:#define _XOPEN_SOURCE #include <stdlib.h>Или при компиляции (с помощью
-D), например:gcc -o output file.c -D_XOPEN_SOURCE
Comments