小编And*_*rew的帖子

在C中定义的C++中正向声明枚举

我搜索了前方声明,并没有看到任何方法让我的情况有效.所以这里是:

1)有一个C头文件,一个导出接口,可以说是一个包含枚举类型的大型多组件软件

"export.h":

// This is in "C"!
typedef enum _VM_TYPE {...., ...., ...,} VM_TYPE;
Run Code Online (Sandbox Code Playgroud)

2)C++中的部分代码使用该导出.

"cpp_code.cpp":

// This is in C++
#include "export.h"
#include "cpp_header.hpp"
{ .... using VM_TYPE values to do stuffs....}
Run Code Online (Sandbox Code Playgroud)

"cpp_header.hpp":

// Need to somehow forward declear VM_TYPE here but how?
Struct VM_INFO {
....
VM_TYPE VType; //I need to add this enum to the struct
....
};
Run Code Online (Sandbox Code Playgroud)

很明显,问题出在cpp_head.hpp中,因为它不知道枚举.

我尝试添加到cpp_header.hpp

typedef enum _VM_TYPE VM_TYPE;
Run Code Online (Sandbox Code Playgroud)

它实际上会起作用.那为什么这个有用呢?因为它有C风格的语法?!无论如何,我被告知不要通过上层"管理"这样做("它是C++,而不是C").

是否还有其他方法可以根据当前的事物联系方式完成这项工作?他们不想更改/添加包含文件; "枚举类"只是c ++,对吗?仅将"enum VM_TYPE"添加到cpp_header.hpp将会出现有关重新定义的错误. …

c c++ enums declaration forward

8
推荐指数
1
解决办法
977
查看次数

标签 统计

c ×1

c++ ×1

declaration ×1

enums ×1

forward ×1