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]


Почему объявление для этой функции отсутствует в моем заголовке?

506   1  

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

    Ничего не найдено.