Я пытаюсь сгенерировать код C для простой функции Matlab funciton:
function[] = myfunc()
%#codegen
fprintf('Executing myfun\n');
fid = fopen('file_created_by_myfun.txt','w');
fwrite(fid,'This is written by myfun upon execution');
fclose(fid);
end
Однако в сгенерированном коде переменная типа boolean_T используется, но нигде не объявлена. Мне кажется, что не был включен заголовок с его объявлением. Скрипт для генерации кода:
config_obj = coder.config('exe');
config_obj.GenCodeOnly = 'on';
codegen -config config_obj myfun
При вызове make
с пользовательским make-файлом я получаю следующие сообщения об ошибках:
error: unknown type name 'boolean_T'
error: 'false' undeclared (first use in this function)
error: 'true' undeclared (first use in this function)
Я могу запросить один файл и добавить собственный код с помощью:
config_obj = coder.FilePArtitioningMethod('SingleFile');
config_obj.CustomSourceCode = ['typedef unsigned int boolean_T;',newline,...
'#define true 1U',newline,...
'#define false 0U'];
Это позволит мне правильно скомпилировать код, но это дерьмовое решение, так как я не хочу генерировать один файл, а добавленный источник не включается в каждый файл по мере необходимости.
Есть ли способ избежать использования типа boolean_T? Или есть какая-то директива, которую я должен был использовать, но я пропал?