C 库中构造函数符号的双重定义
在 C 中,当使用 nm 检查时,构造函数定义在库中出现两次。这是由于 Itanium C ABI,它需要多个构造函数条目来支持多态性。
构造函数的损坏名称表明了它们的用途:
即使类可能没有虚拟基类由于 ABI 对多态性的支持,GCC 发出了两个构造函数。这种行为在 GCC 中被认为是一个已知问题,当不涉及多态性时,编译器可能会优化这种行为。
不同类型的构造函数具有以下含义:
虽然构造函数符号的这种双重发射通常不会引起问题,但在使用 nm 等工具检查库符号时可能会导致混乱。
以上是为什么 C 库中有两个构造函数符号?的详细内容。更多信息请关注PHP中文网其他相关文章!