Обнаружена ошибка «fdopen не был объявлен» в g ++ 4, скомпилированном в g ++ 3
У меня есть код, который счастливо скомпилирован с g ++ версии 3. что-то. Затем я хотел создать другой код, содержащий символы C ++ 11, поэтому я обновился до g ++ 4.7. Теперь мой оригинальный код не собирается. Я получаю ошибку:
'fdopen' не был объявлен в этой области
Согласно man-странице, fdopen () объявлен в stdio.h, который я включаю. Я не уверен, что это актуально, но я работаю в среде Cygwin. Точной версией g ++, которую я использую, является версия 4.7.2, предоставленная Cygwin.
Я не изменил этот код, так как я переключил компилятор, и я могу точно подтвердить, что он собран, и мой тестовый код выполнялся и проходил с предыдущим компилятором.
В соответствии с запросом, пример кода для демонстрации проблемы:
#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