私のプロジェクトでは、システム スレッド セーフ バージョンではない simple_xxxx.c があるため、同等のシステム スレッドを作成するために、sys_xxxx.cpp を作成しました。ここで、C コード全体が MyNameSpace という名前空間内に取り込まれます。ファイルには、コンパイル時に混乱を招く危険を冒すために simple_xxxx.h を含めていませんが、.cpp ファイルの宣言を取得するために sys_xxxx.h を含めています。そうしている間、名前空間内で宣言されているにもかかわらず、int と混同される以下の列挙型のコンパイル エラーが発生します。
これについての提案は大歓迎です。
// xxxx.h
namespace MyNameSpace {
typedef enum {
FormatFlags_LeftAlign = (1 << 0), // 1
FormatFlags_SignPrefix = (1 << 1), // 2
FormatFlags_SpacePrefix = (1 << 2), // 4
FormatFlags_ZeroPad = (1 << 3), // 8
FormatFlags_Format = (1 << 4) // 16
} FormatFlags;
bool string_AppendFormatted(UnicodeString_s*, UnicodeString_s*, void*);
}
///xxxx.cpp
namespace MyNameSpace {
bool string_AppendFormatted(UnicodeString_s*, UnicodeString_s*, void*)
{
FormatFlags eFlags = (FormatFlags)0;
case '-':
4086: eFlags |= FormatFlags_LeftAlign;
break;
case '+':
4089: eFlags |= FormatFlags_SignPrefix;
break;
case '0':
4092: eFlags |= FormatFlags_ZeroPad;
break;
} // method
} // namespace
xxxx.cpp: In function 'bool MyNameSpace::string_AppendFormatted(MyNameSpace::UnicodeString_s*, MyNameSpace::UnicodeString_s*, void*)':
xxxx.cpp:4086: error: invalid conversion from 'int' to 'MyNameSpace::FormatFlags'
xxxx.cpp:4089: error: invalid conversion from 'int' to 'MyNameSpace::FormatFlags'
xxxx.cpp:4092: error: invalid conversion from 'int' to 'MyNameSpace::FormatFlags'