typedef enum Mode_t
{
MODE_READ = 0,
MODE_WRITE = 1,
MODE_READ_WRITE = 2
}Mode_T;
int callfunc(int, Mode_T);
#include "mode.h"
extern "C" int callfunc(int, Mode_T);
int run()
{
callfunc(2, MODE_WRITE);
}
我收到以下编译错误:
Mode_T
尚未宣布。
我尝试将extern
用于enum
,但之后又出现以下错误:
错误:使用enum'Mode_t'而没有事先声明
如何在C
文件中使用C++
枚举?
答案 0 :(得分:4)
如何在C ++文件中使用C枚举?
就像所有C声明一样,您必须使用extern "C"
。
您可以将它放在include指令中,例如:
extern "C" {
#include "mode.h"
}
常见的模式是使用
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
在头文件本身的开头和结尾处,以使标头可以在两种语言中使用,而无需知道标头使用的语言。