Я пытаюсь сгенерировать код 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? Или есть какая-то директива, которую я должен был использовать, но мне не хватает?