Обнаружена ошибка «fdopen не был объявлен» в g ++ 4, скомпилированном в g ++ 3

У меня есть код, который счастливо скомпилирован с g ++ версии 3. что-то. Затем я хотел создать другой код, содержащий символы C ++ 11, поэтому я обновился до g ++ 4.7. Теперь мой оригинальный код нет построить. Я получаю ошибку:

fdopen» не был объявлен в этой области

Согласно man-странице, fdopen () объявлен в stdio.h, который я включаю. Я'Я не уверен, что это актуально, но я работаю в среде Cygwin. Точной версией g ++, которую я использую, является версия 4.7.2, предоставленная Cygwin.

Я не изменил этот код, так как я переключил компилятор, и я могу точно подтвердить, что он собран, и мой тестовый код выполнялся и прошел с предыдущим компилятором.

В соответствии с запросом, пример кода для демонстрации проблемы:

#include 
#include 
#include 
#include 

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

Ответы на вопрос(2)

Ваш ответ на вопрос