2

別のファイル myFoo.c に実装されている関数 foo() を呼び出すファイル mySFun.c に s-function があります。mySFun.c の mdlOutput 関数内に printf ステートメントを記述すると、正常に動作します。しかし、myFoo.c の関数 foo() 内に printf を配置すると、コマンド ウィンドウに出力が表示されません。

printf が s-function から呼び出される別のファイル内にある場合、printf 機能を有効にするにはどうすればよいですか?

4

2 に答える 2

6

MEX 関数から MATLAB コンソールに書き込む唯一の公式な方法は、関数mexPrintfを使用することです。ただし、ヘッダー ファイル mex.h には次の行が含まれています。

#define printf mexPrintf

また、simstruc.h には mex.h が含まれています。mySFun.c から simstruc.h をインクルードしていると思われますが、myFoo.c からはインクルードしていません。他のソース ファイルにも simstruc.h または mex.h を含める (#define を取得する) か、直接 mexPrintf を呼び出すように切り替えることができます。

于 2011-05-26T13:42:55.263 に答える
1

printf は C ライブラリ ファイルなので、自分で作成する必要はありません :)。itz 関数 foo() を呼び出す場合は、代わりに mySFun.h ファイルに myFoo.h を挿入する必要があります。

于 2011-05-26T13:29:58.427 に答える