Форвардное объявление анонимного typedef struct C++

У меня есть 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 ответ

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

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

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

Другие вопросы по тегам