2013-05-31 11 views
6

Próbowałem kompilowanie następujący kod z gcc 4.7.3 i clang 3.2.1 na Ubuntu 13.04 (64-bitowy):stdlib.h nie ma deklaracji dla putenv

#include <stdio.h> 
#include <stdlib.h> 
#include <stdbool.h> 

int main() { 
    putenv("SDL_VIDEO_CENTERED=1"); 

    return 0; 
} 

Spodziewałem putenv być zadeklarowane w stdlib.h nagłówek, ale otrzymuję następujące ostrzeżenie:

test.c: In function ‘main’: 
test.c:6:5: warning: implicit declaration of function ‘putenv’ [-Wimplicit-function-declaration] 

Dlaczego w nagłówku brakuje deklaracji dla tej funkcji?

Odpowiedz

8

Musisz zdefiniować określone makra. Spójrz na 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 

Spróbuj definiowania albo _SVID_SOURCE lub _XOPEN_SOURCE przed tym stdlib.h, tak:

#define _XOPEN_SOURCE 
#include <stdlib.h> 

Albo podczas kompilacji (z -D), takich jak:

gcc -o output file.c -D_XOPEN_SOURCE 
Powiązane problemy