• 締切済み

入力ファイルの解析

fp=fopen(ex1.cpp,"r"); によって、開いたCソースファイルを解析してコンパイルエラーがあるかを確かめるプログラムを作成するにはどうすればいいのですか?

みんなの回答

  • rot-N
  • ベストアンサー率27% (118/432)
回答No.5

C++をCに変更するプログラム、Cのプリプロセッサのソースコードを探して眺めてみてください。 あなたがどんなに大変なことをしようとしているか、判ると思います。

  • nucomewl
  • ベストアンサー率25% (2/8)
回答No.4

systemという関数があって、これはコマンドラインから実行しているのと同じことが出来ます。 これを利用して"ex.cpp"をコンパイルしてみて、 その結果をパイプなどで手に入れればコンパイルエラーの位置がわかるでしょう。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

結論からいうと、非常に大変です。コンパイラをつくることと同じ程度の労力を必要とします。 エラーがあるかどうかを確かめる最も簡単な方法は、実際にコンパイラでコンパイルして、エラーを取ることです。もし、コンパイラを買うお金が問題ならば、無償のコンパイラがたくさんありますので、それを利用できます。私としては、どうして、そのような質問をされたのかと言うことに、興味があります。よろしければ、そのような質問をされた理由を教えていただけませんでしょうか。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

コンパイラの一歩手前(コンパイル後の生成物を出力しない)を自分でがんばって作る。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

>fp=fopen(ex1.cpp,"r"); >によって、開いたCソースファイルを解析してコンパイルエラーがあるかを確かめる 非常に高度な知識と技術を持っていないとできません。 実装すべきことは「コンパイラとほぼ同じ処理」になるかと思います。 当然「#include <stdio.h>」のようなものがあった場合にはinclude指定されているファイル(ここではstdio.h)を読みに行く必要があります。cppがwindows用のものだった場合には「#import "progid:aaa.bbb.1" no_namespace, named_guids」のような記述があるかもしれません。この場合はCOMコンポーネントを探しに行ってその中身を読み出す必要もあります。 私だったら調べたいcppファイルをfopenで開くのではなく、コンパイラを使ってコンパイルをかけてその出力結果を横取りしてコンパイルエラーがあるかどうかを調べます。この場合でも相当うまく作らないとcppの依存関係が完全には解決されないためエラーのないcppファイルでもエラーとして出力されかねません。

関連するQ&A