2013-05-31 8 views
6

Ich habe versucht, den folgenden Code mit gcc 4.7.3 und clang 3.2.1 auf Ubuntu 13.04 (64-Bit) Kompilieren:stdlib.h hat keine Erklärung für putenv

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

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

    return 0; 
} 

I putenv voraussichtlich im stdlib.h erklärt werden Header, aber ich bekomme die folgende Warnung:

Warum fehlt die Deklaration für diese Funktion in meinem Header?

Antwort

8

Sie müssen bestimmte Makros definieren. Schauen Sie sich 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 

Versuchen Sie definieren entweder _SVID_SOURCE oder _XOPEN_SOURCE vor einschließlich stdlib.h, etwa so:

#define _XOPEN_SOURCE 
#include <stdlib.h> 

Oder beim Kompilieren (mit -D), wie:

gcc -o output file.c -D_XOPEN_SOURCE