This simple mex program
#include "mex.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){ mexCallMATLAB(0, NULL, 1, &prhs[0], "disp"); }
gives an annoying compiler warning:
testmexcallmatlab.c: In function ‘mexFunction’: testmexcallmatlab.c:5:3: warning: passing argument 4 of ‘mexCallMATLAB’ from incompatible pointer type [enabled by default] /usr/local/matlab/r2011a/extern/include/mex.h:250:12: note: expected ‘struct mxArray ’ but argument is of type ‘const struct mxArray ’
Otherwise the program of course works, but why is in mex.h the 4th argument of mexCallMATLAB declared as "mxArray *prhs[]" rather than "const mxArray *prhs[]", Matlab functions are not supposed to change the righthand side arguments?
Best Answer