我正在尝试 "Writing an LLVM Pass" 中的 Hello pass 示例网页。我按照说明编译(使用 gcc-4.2)Hello.cpp,但出现编译错误:
Hello.cpp:20: error: expected identifier before string constant
Hello.cpp:20: error: expected ',' or '...' before string constant
Hello.cpp:20: error: expected constructor, destructor, or type conversion before ';' token
也就是程序中的 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);
}
谁能帮我解决这个问题?非常感谢!
最好的,
丹尼尔
最佳答案
这是演示代码。除了第 11 行,这应该可以正常工作,它应该是:
Hello() : FunctionPass(ID) {}
我正在使用 llvm v2.8,通过这个小改动,一切似乎都运行良好。但我将该程序重命名为其他名称,因为 Hello 通行证已经存在。
按照 llvm v2.8, Writing an llvm pass 中的说明进行操作
关于c++ - llvm 的 Hello pass 示例的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469645/