【发布时间】:2016-05-17 09:55:50
【问题描述】:
我正在使用 Eclipse 和谷歌测试。我写了下面的代码,但它显示错误“'led'之前的预期主表达式”。
代码如下:
LedDriverTest.cpp
#include "C:\googletest-master\googletest\include\gtest\gtest.h"
#include "LedDriver.h"
TEST(LedDriverTest, LedInitial){
LedDriver led;
EXPECT_EQ(0x00, led.getLedStatus());
}
LedDriver.h
#ifndef LEDDRIVER_H_
#define LEDDRIVER_H_
namespace LedDriver {
class LedDriver {
public:
LedDriver();
virtual ~LedDriver();
unsigned char getLedStatus();
private:
unsigned char status;
};
} /* namespace LedDriver */
#endif /* LEDDRIVER_H_ */
LedDriver.cpp
#include "LedDriver.h"
namespace LedDriver {
LedDriver::LedDriver() {
status = 0x00;
}
LedDriver::~LedDriver() {
}
unsigned char LedDriver::getLedStatus(){
return status;
}
} /* namespace LedDriver */
“LedDriver.h”和“LedDriver.cpp”在同一个名为“LedDriver”的项目中。 “LedDriverTest.cpp”位于另一个名为“LedDriverTest”的项目中。 GCC 编译器的“LedDriverTest”项目的包含路径设置为“LedDriver”项目。
请告诉我出了什么问题以及如何解决。
【问题讨论】:
-
您的
TEST函数是否在LedDriver命名空间中?如果没有,您需要完全限定其中的任何类型,例如:LedDriver::LedDriver led(或:using namespace LedDriver,或:using LedDriver::LedDriver)。 -
试试
LedDriver::LedDriver led;。 -
当我添加 'using namespace LedDriver' 时,出现错误'reference to "LedDriver" is ambiguous'。我尝试添加“LedDriver::”,但出现“对“LedDriver::LedDriver::LedDriver()”的未定义引用。