我正在编写一个将C代码链接到matlab的mex文件。
这是我的简单mex文件,它没有做任何事情并且编译得很好。
#include "mex.h"
#ifndef N
#define N 100
#endif
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
/*validate input/output arguments */
}
但如果我改变评论,就像这样:
#include "mex.h"
#ifndef N
#define N 100
#endif
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
//validate input/output arguments
}
然后我收到以下错误:
>> mex mexcallingmatlab.c
Building with 'gcc'.
Warning: You are using gcc version '4.8.2'. The version of gcc is not supported. The version currently supported with MEX is '4.7.x'. For a list of currently supported
compilers see: http://www.mathworks.com/support/compilers/current_release.
Warning: You are using gcc version '4.8.2-19ubuntu1)'. The version of gcc is not supported. The version currently supported with MEX is '4.7.x'. For a list of currently
supported compilers see: http://www.mathworks.com/support/compilers/current_release.
Error using mex
/home/dkumar/Mex_Codes_DKU/Mex_C_Codes_DKU2/mexcallingmatlab.c: In function ‘mexFunction’:
/home/dkumar/Mex_Codes_DKU/Mex_C_Codes_DKU2/mexcallingmatlab.c:9:5: error: expected expression before ‘/’ token
// validate input/output arguments */
^
另外,如果我将任一文件保存为C ++文件,那么它总是编译我是否使用//或/ * .... * /。
有人可以告诉我为什么“//”不能用于评论吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
可能Matlab使用不启用C99功能的gcc参数调用C编译器。由于在C99之前C ++样式注释不是C标准的一部分 - gcc发出错误。
您可以在运行mex
时显式设置CFLAGS以添加-std=c99
。这应该使您能够使用C ++样式注释(和其他功能)。