mex文件:使用" //"编译失败评论;但在使用时编译得很好" / * * /"

时间:2015-01-27 16:35:14

标签: c matlab mex

我正在编写一个将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 ++文件,那么它总是编译我是否使用//或/ * .... * /。

有人可以告诉我为什么“//”不能用于评论吗?

2 个答案:

答案 0 :(得分:1)

有回复here

特别是

  

在Linux下,默认情况下,mex会添加-ansi,它会禁用C ++注释。

答案 1 :(得分:1)

可能Matlab使用不启用C99功能的gcc参数调用C编译器。由于在C99之前C ++样式注释不是C标准的一部分 - gcc发出错误。

您可以在运行mex时显式设置CFLAGS以添加-std=c99。这应该使您能够使用C ++样式注释(和其他功能)。