0

簡単なclangプラグインを書きたかったのです。そこで"PrintFunctionNames"、llvm-clang で提供されているプラ​​グインを実行しました。しかし、コマンドを実行しようとしたとき:

" clang -cc1 -load ../../Debug+Asserts/lib/libPrintFunctionNames.so -plugin print-fns some-input-file.c "

それは私に1つの致命的なエラーを与えます:

fatal error: 'iostream.h' file not found
#include<iostream.h>
        ^
1 error generated.

インクルードディレクトリのパスを提供する -I オプションも使用してみ'iostream'ましたが、それでも同じエラーが発生します。

私はそれを次のように試しました:

「clang++ -I//usr/include/c++/4.6 -cc1 -load ../../../../Release+Asserts/lib/libPrintFunctionNames.so -plugin print-fns ak.cpp」

では、どうすればこれを機能させることができますか?

4

4 に答える 4

2

末尾に .h を追加しないでください。

#include <iostream>

それはそれを修正する必要があります。

于 2013-01-20T06:46:08.143 に答える
2

iostreamCではなくC ++に属します。したがって、次のように含める必要があります

#include <iostream>

さらに、C++ でプログラミングしているので、C++ を使用したいことをコンパイラや他のすべての人に明確に示すために、ソース ファイルの末尾を .c ではなく .cpp にする必要があります。また、最初のコンパイラ呼び出しで呼び出す必要があるかもしれませんclang++(ただし、プラグインのコンテキストではそれについてはわかりません)

于 2013-01-20T06:47:35.873 に答える
1

C++ 言語が ISO によって標準化された後、という名前のヘッダー ファイルは に名前iostream.hが変更されましたiostream。代わりに使用するようにプログラムを変更する#include <iostream>と、コンパイルされます。

また、各インクルードの後に​​ステートメントを追加する必要がありusing namespace std;ます (または、iostream 関数/オブジェクトへの各参照の前に を付けますstd::)。

これを使って始められます

#include <iostream>
using namespace std;

名前空間に慣れてきたら、usingステートメント & を削除して、代わりにstd::cout, std::cinetc を使用するか、

using std::cout;
using std::cin;

于 2013-01-20T06:47:27.117 に答える