電子書籍の厳選無料作品が豊富!

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

A 回答 (5件)

C++をCに変更するプログラム、Cのプリプロセッサのソースコードを探して眺めてみてください。



あなたがどんなに大変なことをしようとしているか、判ると思います。
    • good
    • 0

systemという関数があって、これはコマンドラインから実行しているのと同じことが出来ます。


これを利用して"ex.cpp"をコンパイルしてみて、
その結果をパイプなどで手に入れればコンパイルエラーの位置がわかるでしょう。
    • good
    • 0

結論からいうと、非常に大変です。

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

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

    • good
    • 0

>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ファイルでもエラーとして出力されかねません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!