2

mexgccで構成されたubuntuで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 標準に含まれています。ただし、C99 より前の ISO C のバージョンを指定する -std オプション、または -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 に答える