0

我在使用 c++ 程序主函数中的 ac 标头中定义的枚举时遇到了一些麻烦。代码与此类似:

主.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++ 的这种混合有什么问题

4

2 回答 2

6

这不是一个有效的typedef陈述,您缺少别名。

尝试

typedef enum
{
  channel_0,
  channel_1
} channel;

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

于 2012-04-24T21:54:03.090 回答
0

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

于 2012-04-24T21:54:44.170 回答