2

我想在 ubuntu 中编译一个mex配置了 gcc 的 C 代码。我可以在 OSX 中顺利编译代码。但是,当我想在 Linux 中编译它时,编译器会在以//( 它可以正常使用/* */.知道是否有任何方法可以解决这个问题。///* */

MATLAB 版本:R2012b Linux 中的 gcc 版本:4.7.2 OSX 中的 gcc 版本:4.2.1

任何帮助表示赞赏

编辑:这是我用来编译代码的命令:

mex -g -largeArrayDims -ldl TDSVDHNGateway.c

这是 mex 生成的错误:

In file included from TDSVDHNGateway.c:2:0:
TDS.h:17:1: error: expected identifier or ‘(’ before ‘/’ token
TDS.h:26:2: error: unknown type name ‘index_t’
TDS.h:27:2: error: unknown type name ‘index_t’
In file included from TDSVDHNGateway.c:2:0:
TDS.h:146:3: error: unknown type name ‘index_t’
TDSVDHNGateway.c:37:3: error: unknown type name ‘index_t’
TDSVDHNGateway.c: In function ‘mexFunction’:
TDSVDHNGateway.c:166:25: error: ‘index_t’ undeclared (first use in this function)
TDSVDHNGateway.c:166:25: note: each undeclared identifier is reported only once for each function it appears in

头文件中的第 17 行是:

//Defining index_t
typedef size_t index_t;

如果我//Defining index_t/*Defining index_t*/代码替换将没有问题。

4

1 回答 1

9

来自gcc 文档

在 GNU C 中,您可以使用 C++ 样式的注释,它以 '//' 开头并一直持续到行尾。许多其他 C 实现允许这样的注释,它们包含在 1999 C 标准中。但是,如果您指定 -std 选项来指定 C99 之前的 ISO C 版本或 -ansi(等效于 -std=c90),则无法识别 C++ 样式注释。

在 Linux 下,默认mex添加-ansi,禁用 C++ 注释。更新您的 mexopts 文件,替换-ansi-std=c99或运行 mex;

mex -g -largeArrayDims -ldl CFLAGS="\$CFLAGS -std=c99" TDSVDHNGateway.c
于 2013-07-31T18:02:36.327 回答