• ベストアンサー

粒子法プログラムのビルドエラー(cstdlibのエラー)

粒子法のMPS法のプログラミングをしているのですが、C++でmps.cをビルドをすると、cstdlibのエラーが出てビルドが出来ません。 mps.cの本文中にはエラーは無く、visual studio 9.0にあるcstdlibの構文エラーが出てしまいます。 最初から入っているライブラリファイルが間違っているとは思えません。 解決法を教えてください。お願いします。 ↓ mps.c内でcstdlibを使っている場所 ↓ #include <cstdlib> /* This line is necessary for C++ compiler. Remove this line in C compiler */ #include <stdio.h> #include <sys/types.h> #include <math.h> #include <string.h> ↓ エラーメッセージ ↓ 1>コンパイルしています... 1>mps.c 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 省略(21行目のエラーが23~32行目まで同じエラーが続く) 1>MPS3000 - エラー 62、警告 0 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

質問者が選んだベストアンサー

  • ベストアンサー
  • goosyu
  • ベストアンサー率58% (36/62)
回答No.2

#include <cstdlib> /* This line is necessary for C++ compiler. Remove this line in C compiler */ コメントに「この行がC++コンパイラに必要です。 Cコンパイラでこの行を消してください。」と書いているので「mps.c」でCコンパイルしたいのであれば,この一行を消してみては?(解決するかわかりませんが、お試しとしてですが。) 尚,#1回答者さんはC++ソースに変更する対処案のようです。

ky0110
質問者

お礼

ご回答ありがとうございます。 ご指摘された一行を消してみたら、ビルドできました。 今気付くと、以前に同様なことをやったのですが、コメントアウトの仕方が悪く、失敗していました。 これで色々試せそうです。 本当にありがとうございました。

その他の回答 (1)

回答No.1

 こんばんは。  「mps.c」の拡張子を「mps.cpp」に変更してから、コンパイルして見ては如何でしょうか。

ky0110
質問者

お礼

ご回答ありがとうございます。 mps.cをmps.cppに変更してやってみたのですが、mps.cpp内のエラーが100個以上発生してしまいます。 mps.cpp(130) : error C2660: 'filecheckopen' : 関数に 3 個の引数を指定できません。 mps.cpp(131) : error C2660: 'filecheckopen' : 関数に 3 個の引数を指定できません。 省略 mps.cpp(518) : error C2065: 'neigh' : 定義されていない識別子です。 mps.cpp(518) : error C2065: 'rep2' : 定義されていない識別子です。 mps.cpp(518) : error C2065: 'neigh_iccg' : 定義されていない識別子です。 mps.cpp(518) : error C2065: 'reiccg2' : 定義されていない識別子です。 mps.cpp(518) : error C2065: 'wall_type' : 定義されていない識別子です。 mps.cpp(518) : fatal error C1003: プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。