[英]expected primary-expression before 'led'
我在Google测试中使用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”项目。
请告诉我出了什么问题以及如何解决。
您应该using namepace LedDriver
在LedDriverTest.cpp文件的顶部添加。
编译错误是由以下事实引起的:您的类LedDriver
在名称空间LedDriver
声明,但您未指定它,并且编译器仅在LedDriverTest.cpp编译期间在默认名称空间中查找它。 using
子句告诉它在解析名称时要查找名称空间LedDriver
以及默认名称空间。
您可以显式使用LedDriver::
前缀,以明确告诉编译器您愿意的名称空间。 但是,考虑到您的用法-LedDriver的测试-如果您using
指令,这是自然且易于阅读的。 原因是测试文件与经过测试的功能紧密相关-因此,通过在每个声明中省略该命名空间,不会使代码变得更加清晰。 此外,它还可以帮助您消除LedDriver::
的混乱现象,该现象在文件中经常重复使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.