3

「LLVMパスの作成」 WebページでHelloパスの例を試していました。(gcc-4.2を使用して)Hello.cppをコンパイルするための指示に従いましたが、コンパイルエラーが発生しました。

Hello.cpp:20:エラー:文字列定数の前に予期される識別子
Hello.cpp:20:エラー:文字列定数の前に'、'、または'...'が
期待されますHello.cpp:20:エラー:コンストラクタ、デストラクタ、または型変換が期待されます前 ';' トークン

これはINITIALIZE_PASS(Hello, "Hello", "Hello World Pass", false, false);プログラムの行です。プログラムは次のとおりです。

#include "llvm/Pass.h"  
#include "llvm/Function.h"  
#include "llvm/Support/raw_ostream.h"

using namespace llvm;

namespace {  

 struct Hello : public FunctionPass {  
    static char ID;  
    Hello() : FunctionPass(&ID) {}  

    virtual bool runOnFunction(Function &F) {  
        errs() << "Hello: " << F.getName() << "\n";  
        return false;  
    }  
 };  

 char Hello::ID = 0;  
 INITIALIZE_PASS(Hello, "Hello", "Hello World Pass", false, false);  
}

誰かがこれで私を助けることができますか?どうもありがとうございます!

最高、
ダニエル

4

1 に答える 1

0

これがデモコードです。これは、次の 11 行目を除いて正常に動作するはずです。

    Hello() : FunctionPass(ID) {}

私はllvm v2.8を使用していますが、その小さな変更ですべてがうまく機能しているようです。しかし、Hello パスが既に存在していたため、プログラムの名前を別の名前に変更しました。

llvm v2.8、llvm パスの記述の指示に従ってください

于 2011-03-13T03:13:41.580 に答える