Форвардное объявление анонимного 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.