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

What do the X(), Y() and Z() macros do in 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 的文档。