Как заставить printf работать, когда он находится в отдельном c-файле, который вызывается из s-функции? - PullRequest
2 голосов
/ 26 мая 2011

У меня есть s-функция в файле mySFun.c, которая вызывает функцию foo (), которая реализована в отдельном файле myFoo.c. Когда я пишу операторы printf внутри функции mdlOutput в mySFun.c, они работают нормально. Но когда я помещаю printf в функцию foo () в myFoo.c, они не показывают свои выходные данные в командном окне.

Как включить функцию printf, если printf находится внутри другого файла, который вызывается из s-функции?

Ответы [ 2 ]

6 голосов
/ 26 мая 2011

Единственный официальный способ записи в консоль MATLAB из MEX-функции - через функцию mexPrintf . Однако заголовочный файл mex.h содержит следующую строку:

#define printf mexPrintf

И simstruc.h включает в себя mex.h. Я подозреваю, что вы используете simstruc.h из mySFun.c, но не из myFoo.c. Вы можете либо включить simstruc.h или mex.h в другие ваши исходные файлы (чтобы найти там #define), либо переключиться на прямой вызов mexPrintf.

1 голос
/ 26 мая 2011

printf - это файл C-библиотеки, поэтому вам не нужно создавать свой :). вместо этого вам следует вставить myFoo.h в файл mySFun.h, если вы вызовете itz-функцию foo ().

...