GoogleTest 1.6 with Cygwin 1.7: \'fileno\' was not declared in this scope
Error message when building a simple test on Factorial() function in Eclipse CDT:
Some functions go beyond the ANSI standard. These are disabled when you use std=c++11 (or std=c++0x).
Among them are fdopen
, fileno
and strdup
.
There are two possibilities to use them:
I have tested both on Suse Linux Enterprise 11, MinGW and Cygwin.
Addition: Another (possibly better) way to access non-ANSI symbols would be to add
#define _POSIX_C_SOURCE 200809L
before the first #include in your file. This will give you access to most of the non-standard routines.
Some functions (e.g. realpath(...)
) require
#define _BSD_SOURCE
to be inserted on top of your file.
Setting the C++ standard to -std=gnu++0x rather than -std=c++0x, worked for me. You can try the statement:
g++ -std=gnu++0x -DGTEST_OS_CYGWIN=1 -I"E:\source\gtest-1.6.0\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/challenge.d" -MT"src/challenge.d" -o "src/challenge.o" "../src/challenge.cpp"
Setting symbol (-DGTEST_OS_CYGWIN=1) has got nothing to do with this error.