Skip to content
Latchkey

ネームマングリング - CI/CD用語集の定義

ネームマングリングは、オーバーロードされた関数が一意にリンクされるように、型や namespace の情報をシンボル名にエンコードします。

ネームマングリング は、コンパイラが関数のシグネチャ (namespace、引数の型) を、出力するシンボル名にエンコードする方法です。これにより、オーバーロードされた関数が一意な linker シンボルを得ます。C++ は mangle しますが、C は mangle しません。

ネームマングリングは、コンパイラが関数のシグネチャ (namespace、引数の型) を、出力するシンボル名にエンコードする方法です。これにより、オーバーロードされた関数が一意な linker シンボルを得ます。C++ は mangle しますが、C は mangle しません。

CI において

C と C++ を混在させるときによくあるリンクエラーは、一致しない mangle 済み名によって引き起こされる undefined reference です。C の宣言を extern "C" で囲むと mangling が無効になりリンクが修正されます。コンパイルは通ったのに CI のリンクステップが失敗する場合に確認する価値があります。

関連ガイド