How can I use "mexPrintf" for simulation and "printf" for code generation in a MATLAB Function Block using coder.ceval?
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 12 Oct 2018
Réponse apportée : MathWorks Support Team
le 24 Juin 2019
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?
Réponse acceptée
MathWorks Support Team
le 25 Juin 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.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Simulink Coder dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!