我在使用 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/