c++ - X()、Y() 和 Z() 宏在 LLVM 中有什么作用?

标签 c++ compiler-construction llvm

我在 Sparc LLVM 后端找到这段代码:

extern "C" void LLVMInitializeSparcTargetInfo() {
  RegisterTarget<Triple::sparc, /*HasJIT=*/true> X(TheSparcTarget, "sparc",
                                                   "Sparc");
  RegisterTarget<Triple::sparcv9, /*HasJIT=*/true> Y(TheSparcV9Target,
                                                     "sparcv9", "Sparc V9");
  RegisterTarget<Triple::sparcel, /*HasJIT=*/true> Z(TheSparcelTarget,
                                                     "sparcel", "Sparc LE");
}

我不明白这些 XYZ 宏的作用,我找不到它们的任何定义或文档。

最佳答案

是什么让您认为这些是宏?

对我来说,XYZ 看起来像是用于实例化注册对象的一次性名称。

您应该寻找 RegisterTarget 的文档。

关于c++ - X()、Y() 和 Z() 宏在 LLVM 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076214/

相关文章:

C++编译器——常用符号

java - 语言规范是如何创建的

c# - LambdaExpression.CompileToMethod 不适用于 System.Type?

android - 缺少 sync_val_compare_and_swap_1

llvm - 什么是有序和无序 LLVM CmpInst 比较指令?

c++ - 如何实现通用的 max 函数?

主函数执行时的 C++ 堆栈溢出异常

c++ - 什么 (*(void(*)()) shellcode)();方法?

objective-c - 如何禁用clang中的-Wcompare-distinct-pointer-types警告?

c++ - 当我将指向对象的指针设置为 NULL 时,为什么会出现段错误?