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

时间:2012-04-24 21:51:49

标签: c++ c

我在使用c ++程序的main函数中的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 ++的混合是否存在问题

2 个答案:

答案 0 :(得分:6)

这不是有效的typedef语句,您缺少别名。

尝试

typedef enum
{
  channel_0,
  channel_1
} channel;

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

答案 1 :(得分:0)

我相信您在源代码中定义了枚举而不是头文件。