How can I use "mexPrintf" for simulation and "printf" for code generation in a MATLAB Function Block using coder.ceval?

8 次查看(过去 30 天)
I am using a MATLAB Function block in my Simulink model. My MATLAB function calls a custom C functions using "coder.ceval". I want to use "mexPrintf" in my C function during simulation but the standard C "printf" when building the model. How can I do this?

采纳的回答

MathWorks Support Team
You can use the "MATLAB_MEX_FILE" C preprocessor macro in your custom C code to determine whether you are compiling for a MEX target. For example, you can use this macro to define a custom "printOutput" function:
#include <stdio.h>
#include <stdlib.h>
#ifdef MATLAB_MEX_FILE
#include "mex.h"
#endif
void printOutput(const char* str);
#ifdef MATLAB_MEX_FILE
// Use the mexPrintf function
void printOutput(const char* str) {
mexPrintf(str);
}
#else
// Use the standard C printf function
void printOutput(const char* str) {
printf(str);
}
#endif
This function is defined to call "mexPrintf" when compiled for a MEX and "printf" otherwise.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Naming Conventions 的更多信息

产品


版本

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by