带有 Cygwin 1.7 的 GoogleTest 1.6:未在此范围内声明“fileno”
在 Eclipse CDT 中对 Factorial() 函数进行简单测试时出现错误消息:
Invoking: Cygwin C++ Compiler
g++ -std=c++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"
In file included from E:\source\gtest-1.6.0\include/gtest/internal/gtest-internal.h:40:0,
from E:\source\gtest-1.6.0\include/gtest/gtest.h:57,
from ../src/challenge.cpp:11:
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h: In function 'int testing::internal::posix::FileNo(FILE*)':
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h:1589:51: error: 'fileno' was not declared in this scope
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h:1595:57: error: 'strdup' was not declared in this scope
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h:1627:71: error: 'fdopen' was not declared in this scope
在 Cygwin 1.7.22 上运行 gcc 4.7.3 的 Eclipse CDT 8.1
gTest 1.6 成功构建,包括演示测试,在 Cygwin 1.7.22 上使用 cmake 2.8.9
我已将构建的库与完整路径链接起来,E:\lib\gtest-1.6.0\Cygwin\libgtest.a
以下命令选项是手动添加的,没有它会出现同样的错误。
-DGTEST_OS_CYGWIN=1
似乎错误与我的代码无关。有人在 Eclipse 和 Cygwin 中使用 gTest 吗?
谢谢,
unsigned long Factorial(unsigned n) {
return n==0? 0 : n*Factorial(n-1);
}
// Tests factorial of 0.
TEST(FactorialTest, HandlesZeroInput) {
EXPECT_EQ(1, Factorial(0));
}
// Tests factorial of positive numbers.
TEST(FactorialTest, HandlesPositiveInput) {
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(2, Factorial(2));
EXPECT_EQ(6, Factorial(3));
EXPECT_EQ(40320, Factorial(8));
}