我在使用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 ++的混合是否存在问题
答案 0 :(得分:6)
这不是有效的typedef
语句,您缺少别名。
尝试
typedef enum
{
channel_0,
channel_1
} channel;
(它实际上可能是合法的,但它不会将名称channel
引入C编译器使用的搜索空间。)
答案 1 :(得分:0)
我相信您在源代码中定义了枚举而不是头文件。