我在文件 mySFun.c 中有一个 s-function,它调用一个在单独的文件 myFoo.c 中实现的函数 foo()。当我在 mySFun.c 的 mdlOutput 函数中编写 printf 语句时,它们工作正常。但是当我将 printf 放在 myFoo.c 中的函数 foo() 中时,它们不会在命令窗口中显示它们的输出。
当 printf 位于另一个从 s-function 调用的文件中时,如何启用 printf 功能?
从 MEX 函数写入 MATLAB 控制台的唯一官方方法是通过函数mexPrintf。但是,头文件 mex.h 包含以下行:
#define printf mexPrintf
simstruc.h 包括 mex.h。我怀疑你正在包括来自 mySFun.c 的 simstruc.h,但不是来自 myFoo.c。您也可以在您的其他源文件中包含 simstruc.h 或 mex.h(以在此处获取 #define),或切换到直接调用 mexPrintf。
printf 是一个 C 库文件,因此您不需要创建自己的 :)。如果您将调用 itz 函数 foo(),则应将 myFoo.h 插入 mySFun.h 文件中。