• 締切済み

UNIX環境のC言語表示から、Visual Studio.NETへの変換方法

はじめまして。 今、web上に落ちてあるプログラムを自分のPCで動かそうとしているのですが、エラーがでまくりでどうしていいかわかりません。 web上にあるプログラムは、Cなのですが、 main(ac, av) int ac; char *av[]; { int lev; /* level of line being processed */ int deg; ・・・・ のような表記なのです。 これを僕のVisual Studio .NETで動かそうとすると、 無数のエラーが出まして、(例えば、acが定義されていません、avが定義されていません、など) どうすればいいかわかりません。 初めてac,avという表記も見ましたし。 .Netで動かす方法をどうしても教えてもらいたいです。どなたかお力をお貸しください。お願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>VC++.netを使ってます。 cl(ver.13)は、VC++.netのコンパイラです。 結局の処 Visual Studio.NET、でプロジェクトを作ると、C++プロジェクトになるということでうまくないということですね。 (昔は、拡張子が.c のファイルを開くと適当にプロジェクトを作ってくれたような記憶があるのですが、今は単なるエディタとして起動するみたい) 1つの方法としては、メイクファイルプロジェクトにすればいいみたいですけど、コマンドを登録してやる必要があるので、そんなことするぐらいなら、 コマンドプロンプトで cl prog.c した方が簡単です。 ぼけた回答ですみません。

すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> 要するに、C++でコンパイルしている以上、書き直すしかC++ではコンパイルされないということなのでしょうか? C++でコンパイルするのであれば、書き直さざるを得ません。また、その場合には、関数の引数並びに関する記法だけでは済まないと思います。 それが既に実績のあるコードである場合、エンバグ等のリスクを冒してまで修正するがよいかどうかは、何ともいえません。元のプログラムがバージョンアップした場合には、その都度、同じ作業が発生することもあり得ます。 ちなみに、Visual C++.NETを使っていても、C言語としてコンパイルすることは可能です。普通は、拡張子を.cppや.ccではなく、.cにすればC言語として解釈されるはずです。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>と書き直せばよいのすか? そうですね、この際ですので直しておくと良いと思います。 試しに、古い表記法でコンパイルしてみたのですが cl(ver.13)ではエラーがでませんでした。 エラーがでるのは別の原因なのかもしれません。

ikecchi
質問者

お礼

ありがとうございます。 そうですね。 すべてのエラーが言葉の未定義ですので、おかしいなと思っていたのです。 しかしながら、1万行近くあるプログラムのすべてを書き直すのは、避けたいのですよね。 なにかほかにいい方法はないのでしょうか? ちなみに、僕は、VC++.netを使ってます。

すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

元のソースの表記は確かに古いですが、C言語としては正当な記法です。予想ですが、C++としてコンパイルしようとしていませんか? 「C++はCのスーパーセットだ」という人がよくいますが、完全なガセネタですので、信用してはいけません。 このように、細部に関しては互換性がない部分がかなりあります。

ikecchi
質問者

お礼

ありがとうございます。 僕が使っているのは、Visual C++.netでした。 おそらくボーランドからDLしてきてやれば、問題ないのでしょうが。。。 要するに、C++でコンパイルしている以上、書き直すしかC++ではコンパイルされないということなのでしょうか?

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

int main(int ac, char *av[]){ … に直すといいんじゃないでしょうか (元のはかなり古い表記法です)

ikecchi
質問者

お礼

ありがとうございます。 かなり古い表記法なのですか。だから新しいのでは動かないんですね。 では、 void CheckIso(L, A, image, lineno) tp_confmat L; tp_axle *A; tp_vertices image; int lineno; { int i, という表記で、Aが定義されていないだの、Lが定義されていないとかいうエラーもすべて、 CheckIso(tp_confmat L, tp_axle *A,....) と書き直せばよいのすか?

すると、全ての回答が全文表示されます。

関連するQ&A