C enum在c ++文件中使用

时间:2018-04-19 08:49:32

标签: c++ c

mode.h :: from c

typedef enum Mode_t
{
    MODE_READ       = 0,
    MODE_WRITE      = 1,
    MODE_READ_WRITE = 2
}Mode_T;
int callfunc(int, Mode_T);

mode.cpp

#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++枚举?

1 个答案:

答案 0 :(得分:4)

  

如何在C ++文件中使用C枚举?

就像所有C声明一样,您必须使用extern "C"

您可以将它放在include指令中,例如:

extern "C" {
    #include "mode.h"
}

常见的模式是使用

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif

在头文件本身的开头和结尾处,以使标头可以在两种语言中使用,而无需知道标头使用的语言。