Форвардное объявление анонимного typedef struct C ++ - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть C ++ dll с заголовочным файлом, который ссылается на некоторые сгенерированные (Matlab Coder) анонимные структуры.Я пытаюсь перенаправить объявление этих структур, чтобы не включать больше, чем основной файл .h из моей DLL в новый проект.

Я видел, что некоторые считают невозможным переадресацию объявления структуры без имени и просто говорят мне назвать мои структуры , но в моем случае я не контролирую, как 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 голосов
/ 11 января 2019

Один из вариантов - указать MATLAB Coder импортировать определение типа из предоставленного вами файла заголовка.coder.cstructname с аргументами extern и HeaderFile достигает этого: coder.cstructname(structVariable, 'extern', 'HeaderFile', 'myHeader.h')

Тогда вы можете иметь объявление в myHeader.h и использовать предварительное объявление по желанию.

МыМы также сделали внутренние заметки о ваших запросах, чтобы мы могли рассмотреть их для будущих версий MATLAB Coder.

...