Der Fehler "'fdopen' wurde nicht deklariert" wurde mit g ++ 4 gefunden, das mit g ++ 3 kompiliert wurde

Ich habe Code, der glücklich mit G ++ Version 3.something kompiliert. Ich wollte dann einen anderen Code erstellen, der C ++ 11-Symbole enthielt, also habe ich ein Upgrade auf g ++ 4.7 durchgeführt. Mein ursprünglicher Code wird jetzt nicht erstellt. Ich erhalte den Fehler:

'fdopen' wurde in diesem Bereich nicht deklariert

Laut der Manpage ist fdopen () in stdio.h deklariert, was ich mit einbeziehe. Ich bin nicht sicher, ob es relevant ist, aber ich arbeite in einer Cygwin-Umgebung. Die genaue Version von g ++, die ich verwende, ist Version 4.7.2, die von Cygwin bereitgestellt wird.

Ich habe diesen Code nicht geändert, seit ich den Compiler gewechselt habe, und ich kann definitiv bestätigen, dass er erstellt wurde und mein Testcode mit dem vorherigen Compiler ausgeführt und bestanden wurde.

Beispielcode zur Veranschaulichung des Problems:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char **argv)
{
    int   fd;
    FILE *fp;

    fd = open("test.txt", (O_WRONLY | O_CREAT | O_EXCL), S_IRWXU);
    if(0 < fd)
    {
        fp = fdopen(fd, "wb");

        fprintf(fp, "Testing...\n");
        fclose(fp);
    }

    return 0;
}


# g++ -std=c++11 -o test test.cpp
test.cpp: In function 'int main(int, char**)':
test.cpp:14:29: error: 'fdopen' was not declared in this scope

Antworten auf die Frage(2)

Ihre Antwort auf die Frage