ExpertiDict

C++ · Avançado · Inglês · Técnico

name mangling

neɪm ˈmæŋ.ɡəl.ɪŋsubstantivo

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.

Veja também

Todos os termos de C++