次のコードを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_ */