'led'之前的预期主要表达
expected primary-expression before 'led'
本文关键字:led 更新时间:2023-10-16
我正在使用Eclipse和谷歌测试。我在下面写了代码,但它显示了错误"在'lead'之前需要主表达式"。
代码如下:
LedDriverTest.cpp
#include "C:googletest-mastergoogletestincludegtestgtest.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"answers"LedDriver.cpp"在同一个名为"LedDrive"的项目中。"LedDriverTest.cpp"在另一个名为"LedDriverTest"的项目中。GCC编译器的"LedDriverTest"项目包含路径设置为"LedDrive"项目。
请告诉我出了什么问题以及如何解决。
您应该在LedDriverTest.cpp文件的顶部添加using namepace LedDriver
。
编译错误是由于您的类LedDriver
是在命名空间LedDriver
中声明的,但您没有指定这一点,并且编译器在编译LedDriverTest.cpp时仅在默认命名空间中查找它。using
子句告诉它在解析名称时查找命名空间LedDriver
和默认命名空间。
如果您愿意,可以显式地使用LedDriver::
前缀来明确地告诉编译器要查找哪个命名空间。然而,考虑到您的使用——LedDriver的测试——如果您使用using
指令,它是自然的,并且易于阅读。原因是测试文件与测试的功能密切相关,所以在每个声明中省略该名称空间并不会降低代码的清晰度。此外,它还可以帮助您消除文件中反复使用的LedDriver::
的混乱。
相关文章:
- 没有找到相关文章