C++プログラムのmain関数でcヘッダーに定義されている列挙を使用する際に問題があります。コードは次のようになります。C++でCの列挙が認識されない
main.cppに:
extern "C"
{
#include my_c_header.h
}
//...
int main(void)
{
my_c_function(channel_1);
return 0;
}
my_c_header.h:
typedef enum channel
{
channel_0,
channel_1
};
void my_c_function(channel ch)
{
//...
}
コンパイラは、シンボル 'CHANNEL_1' を解決できないことを不平を言っています。コンパイラはtms470ですが、問題がこのコンパイラ特有のものかどうか、またはcとC++の混合で何か問題があるかどうかわかりません
あなたのコードには.hが含まれていますが、ファイルは.cとしてリストされています... – guga
あなたは正しいので、修正しました。 – 2NinerRomeo
'typedef enum channel {...};'これは驚くほど有効なコードですが、おそらく(後の使用のために 'void my_c_function(channel ch)'は中括弧の後ろに 'channel'がありません –