2011-05-26 24 views
1

我在文件mySFun.c中有一個s函數,它調用在單獨的文件myFoo.c中實現的函數foo()。當我在mySFun.c中的mdlOutput函數內寫入printf語句時,它們工作正常。但是當我把printf放在函數foo()的myFoo.c中時,它們不會在命令窗口中顯示它們的輸出。如何使printf在從s函數調用的單獨c文件中工作?

當printf位於另一個從s函數調用的文件中時,如何啓用printf功能?

回答

5

通過函數mexPrintf,從MEX函數寫入MATLAB控制檯的唯一正式方法是通過函數mexPrintf。但是,頭文件mex.h包含以下行:

#define printf mexPrintf 

而simstruc.h包含mex.h.我懷疑你是從mySFun.c中包含simstruc.h,但不是從myFoo.c中包含。你可以在你的其他源文件中包含simstruc.h或mex.h(在那裏選擇#define),或者直接切換到調用mexPrintf。

+0

這是正確的!因爲我也必須能夠在單獨的C項目(其中simstruc.h不可用)中使用myFoo.c,所以我必須這樣做:#ifdef MATLAB_MEX_FILE include simstruc.h #endif – Samil 2011-05-27 07:38:32

1

printf是一個C庫文件,因此你不需要創建你的:)。如果要調用itz函數foo(),則應該將myFoo.h插入mySFun.h文件中。

+0

不幸的是,我不能這樣做,因爲算法必須在一個單獨的c文件(不是頭文件)由於其他約束。 – Samil 2011-05-26 13:44:00

相關問題