C++ · Avançado · Inglês · Técnico
name mangling
Codificação do nome de funções e variáveis, com namespace e tipos dos parâmetros, no símbolo do arquivo objeto. Permite sobrecarga e namespaces, que a convenção de C não tem.
Onde usar
Aparece nos erros do linker, com nomes como _Z4somaii, e ao exportar funções para C com extern C. A ferramenta c++filt ou nm -C traduz o símbolo de volta para um nome legível.
Em código
int soma(int a, int b) { return a + b; }
// nm main.o -> _Z4somaii
// c++filt _Z4somaii -> soma(int, int)Exemplos
Run the symbol through c++filt to demangle it.
Passe o símbolo pelo c++filt para fazer o demangle.
extern C turns off name mangling for that function.
extern C desliga o name mangling dessa função.
Cuidado
O esquema não é padronizado: GCC e Clang seguem a Itanium ABI e o MSVC usa outro, então bibliotecas C++ de compiladores diferentes não se misturam.
Sinônimos
decoração de nomes
Origem
Do inglês mangle, desfigurar ou embaralhar.