在c ++中无法识别C枚举

2Ni*_*meo 0 c c++

我在使用c ++程序的main函数中的ac头中定义的枚举时遇到了一些麻烦.代码类似于:

main.cpp中:

extern "C"
{
#include my_c_header.h
}
//...
int main(void)
{
  my_c_function(channel_1);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

my_c_header.h:

typedef enum channel
{
  channel_0,
  channel_1
};

void my_c_function(channel ch)
{
  //...
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨它无法解析符号'channel_1'.编译器是tms470,但我不知道这个编译器是否特有问题,或者c和c ++的混合是否有问题

Ben*_*igt 6

这不是一个有效的typedef陈述,你错过了别名.

尝试

typedef enum
{
  channel_0,
  channel_1
} channel;
Run Code Online (Sandbox Code Playgroud)

(它实际上可能是合法的,但它不会将名称channel引入C编译器使用的搜索空间.)