当 printf 位于从 s-function 调用的单独的 c 文件中时,如何使 printf 工作?
我在文件 mySFun.c 中有一个 s-function,它调用函数 foo(),该函数在单独的文件 myFoo.c 中实现。当我在 mySFun.c 的 mdlOutput 函数内编写 printf 语句时,它们工作正常。但是当我将 printf 放入 myFoo.c 中的函数 foo() 内时,它们不会在命令窗口中显示输出。
当 printf 位于从 s-function 调用的另一个文件内时,如何启用 printf 功能?
I have an s-function in file mySFun.c that calls a function foo() which is implemeted in a separate file myFoo.c. When I write printf statements inside the mdlOutput function in mySFun.c, they work fine. But when I put printf inside function foo() in myFoo.c they don't show their output in command window.
How can I enable printf functionality when printf is inside another file that is called from an s-function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从 MEX 函数写入 MATLAB 控制台的唯一官方方法是通过函数 mexPrintf 。但是,头文件 mex.h 包含以下行:
并且 simstruc.h 包含 mex.h。我怀疑您包含来自 mySFun.c 的 simstruc.h,但不包含来自 myFoo.c 的 simstruc.h。您也可以在其他源文件中包含 simstruc.h 或 mex.h(以获取其中的 #define),或者直接调用 mexPrintf。
The only official way to write to the MATLAB console from a MEX-function is via the function mexPrintf. However, the header file mex.h includes this line:
And simstruc.h includes mex.h. I suspect you are including simstruc.h from mySFun.c, but not from myFoo.c. You can either include simstruc.h or mex.h in your other source files as well (to pick up the #define there), or switch to calling mexPrintf directly.
printf 是一个 C 库文件,因此您不需要创建您的:)。如果您要调用 itz 函数 foo(),则应该将 myFoo.h 插入 mySFun.h 文件中。
printf is a C-library file and as such you do not need to create yours :). you should instead insert the myFoo.h in the mySFun.h file if you will call itz function foo().