'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::的混乱。

相关文章:
  • 没有找到相关文章