【发布时间】:2012-04-26 18:15:15
【问题描述】:
我有一个像这样定义枚举的 C API:
typedef enum
{
C_ENUM_VALUE_NONE = 0,
C_ENUM_VALUE_APPLE = (1 << 0),
C_ENUM_VALUE_BANANA = (1 << 1),
C_ENUM_VALUE_COCONUT = (1 << 2),
// etc.
C_ENUM_VALUE_ANY = ~0
} CEnumType;
有一个使用枚举的方法,定义为:
void do_something(CEnumType types);
在 C 中,你可以这样调用:
do_something(C_ENUM_VALUE_APPLE | C_ENUM_VALUE_BANANA);
但是,如果您尝试在 C++(Linux、g++ 编译器)中以这种方式调用它,则会收到错误,从“int”到“CEnumType”的转换无效。
在我的 C++ 应用程序中使用此 C API 的正确方法是什么?
【问题讨论】: