Itanium C ABI は、パラメーターに関する情報を含めるために関数名のマングリングを指定します。そして機能性。コンストラクター名は特定のパターンに従います:
_Z | N | <class_name> | <ctor-type> | E | <parameters> prefix | nested | `Thing` | Constructor | end nested | parameters: `int`
GCC によって発行されるコンストラクターの種類が異なるため、ライブラリ内のコンストラクター シンボルは 2 回表示されます:
問題のクラスに仮想基底クラスがないにもかかわらず、GCC は依然として両方のコンストラクターを副産物として生成します。ポリモーフィズムをサポートします。ポリモーフィズムが関係しない場合、GCC はコンストラクターを 1 つだけ発行することで最適化できます。
2 つのコンストラクターの名前は、マングルされた名前に C1 指定子と C2 指定子が含まれているため異なります。
コンストラクターの二重放出シンボルは Itanium C ABI とポリモーフィズムのサポートの結果ですが、ポリモーフィズムが使用されていない場合は GCC によって最適化できます。
以上がItanium C ABI がデュアル コンストラクター シンボルを生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。