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

12 Ansichten (letzte 30 Tage)
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?

Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 25 Jun. 2019
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.

Weitere Antworten (0)

Kategorien

Mehr zu Simulink Coder finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by