我正在 macOS 15.4 上使用 Xcode 16.1 编译一个应用程序。检查编译器生成的目标文件后,发现[abi:de180100]
其中附加了一些符号。这个后缀并不存在于 C++ 代码中。看来这个后缀也被附加到了一些其他符号和项目中。
我想了解更多关于后缀的信息,为什么需要后缀,以及它对它所修饰的符号有何影响。但是,我似乎找不到任何相关的文档。有人能指点我吗?
我正在 macOS 15.4 上使用 Xcode 16.1 编译一个应用程序。检查编译器生成的目标文件后,发现[abi:de180100]
其中附加了一些符号。这个后缀并不存在于 C++ 代码中。看来这个后缀也被附加到了一些其他符号和项目中。
我想了解更多关于后缀的信息,为什么需要后缀,以及它对它所修饰的符号有何影响。但是,我似乎找不到任何相关的文档。有人能指点我吗?
以下代码打印nullptr
而不是empty
(godbolt 链接):
#include <iostream>
class empty { };
#if 1
void f(std::nullptr_t) {
std::cout << "nullptr\n";
}
#endif
void f(empty) {
std::cout << "empty\n";
}
int main() {
f({});
}
禁用f(nullptr_t)
变体会导致empty
打印。当两个变体都可用时,C++ 使用什么规则来选择nullptr_t
变体?empty