我在使用avr-g++
(AVR 微控制器的 C++ 编译器)编译以下代码时遇到问题。
#ifndef SPI_H_
#define SPI_H_
#include "../LIBcpp.hpp"
namespace uC
{
namespace SPI
{
class Device
{
private:
SPI* m_SPI;
uC::IO::Pin* m_CSPin;
ChipSelectPolarity m_CSPolarity;
public:
Device(SPI& _SPI, uC::IO::Pin& _CSPin, ChipSelectPolarity _CSPolarity);
void Select();
void DeSelect();
void WriteByte(uint8_t _Data);
uint8_t WriteReadByte(uint8_t _Data);
void WriteBytes(uint8_t _Data[], uint8_t _DataLength);
void WriteReadBytes(uint8_t _Data[], uint8_t _ReadBuffer[], uint8_t _DataLength);
};
}
}
#endif /* SPI_H_ */
请注意,我在这个文件中定义了几个枚举和类,这些枚举和类在这个类中使用但没有被包含在内,以防止代码太长。
我收到错误
'IO' in namespace 'uC' does not name a type
'uC::IO' has not been declared
expected ',' or '...' before '&' token
在我的项目中,我有几个代表modules
我正在处理的项目的特定文件。这些文件位于名为Modules
. 头文件LIBcpp.hpp
在上面的目录中。它包括Modules
子目录中的所有头文件。
类Pin
在命名空间内定义,命名空间IO
在命名空间内uC
。此类定义在名为 的头文件中IO.hpp
,该文件包含在LIBcpp.hpp
.
我试过的:
IO.hpp
在头文件中包含SPI.hpp
头文件——导致同样的错误
我不知道如何解决这个错误。如果需要更多代码或信息来解决这个问题,我会提供。
谢谢!
这是IO.hpp
,根据要求:
#ifndef IO_H_
#define IO_H_
#include "../LIBcpp.hpp"
namespace uC
{
namespace IO
{
class Port
{
//Contents removed
};
class Pin
{
//Contents removed
};
}
}
#endif /* IO_H_ */