我想在ubuntu中编译一个使用mexgcc配置的C代码.我可以在OSX中顺利编译代码.然而,当我想编译它在Linux中,编译器生成的注释行的错误开始//(它工作正常/* */.由于该方案包括来自第三方库的几个头文件,我不能代替//用/* */.我想知道是否有办法克服这个问题.
MATLAB版本:Linux中的R2012b gcc版本:OSX中的4.7.2 gcc版本:4.2.1
任何帮助表示赞赏
编辑:这是我用来编译代码的命令:
mex -g -largeArrayDims -ldl TDSVDHNGateway.c
Run Code Online (Sandbox Code Playgroud)
以下是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
Run Code Online (Sandbox Code Playgroud)
头文件中的第17行是:
//Defining index_t
typedef size_t index_t;
Run Code Online (Sandbox Code Playgroud)
如果我//Defining index_t用/*Defining index_t*/代码替换将编译没有问题.
来自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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |