繁体   English   中英

“ led”之前的预期主要表达

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM