匿名Typedef结构C ++的前向声明

时间:2018-12-14 12:04:16

标签: c++ struct forward-declaration matlab-coder

我有一个带有头文件的C ++ dll,该头文件反映了一些生成的(Matlab编码器)匿名结构。我试图转发声明的eseese结构,以避免在新项目中从我的DLL中包含更多的.h主文件。

我已经看到了some would deem it impossible to forward declare a struct without a name and just tell me to name my structs,但就我而言,我无法控制matlab如何生成结构。因此,我敢再问这个问题。

是否有一种方法可以在不更改原始结构的情况下转发声明封闭的结构?

从生成的文件中获取示例结构,我无法更改,也不想包含在标题中:

typedef struct {
  real_T V_n[21];                     
  real_T ROP;                          
} ExtY_CMSim_T;

DLL标头:

// Forward Declarations: 
typedef struct ExtY_Sim_T;

extern "C" {
extern __declspec(dllexport) void getOutputs(ExtY_Sim_T &output);
}

在编译最后一个代码片段时,我被告知'ExtY_Sim_T'已经被声明为typedef。

1 个答案:

答案 0 :(得分:2)

一种选择是告诉MATLAB Coder从您提供的头文件中导入类型定义。带有externHeaderFile参数的coder.cstructname实现以下目的:coder.cstructname(structVariable, 'extern', 'HeaderFile', 'myHeader.h')

然后您可以在myHeader.h中使用声明,并根据需要使用前向声明。

我们还对您的请求进行了内部注释,因此我们可以在以后的MATLAB Coder版本中考虑它们。