我搜索了前方声明,并没有看到任何方法让我的情况有效.所以这里是:
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将会出现有关重新定义的错误. …