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

标签 c++ c

我在使用 C++ 程序的主函数中的 C header 中定义的枚举时遇到了一些问题。代码类似这样:

主要.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++的混用有问题

最佳答案

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

尝试

typedef enum
{
  channel_0,
  channel_1
} channel;

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

关于c++ - C 枚举在 C++ 中无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306535/

相关文章:

c++ - 评估不同参数的 constexpr 函数时的运行时差异

c++ - 仅用 10 万个存储单元对 100 万个数字进行排序

c - C语言中普通指针和自引用指针有什么区别

c++ - 如何将这些 c 代码行转换为 c++

c++ - 通过引用传递 map<int, vector>

来自映射文件的 C++ memcpy 太慢

c++ - 打印模板函数中的任何结构

将本地时间作为字符串转换为 1970 年 1 月 1 日起的毫秒

c - 如何将库添加到 Eclipse C 项目?

c++ - 结合大型 C 和 C++ 程序