C++ · Intermediário · Inglês · Técnico
extern C
Especificador de ligação, escrito extern "C", que faz o compilador de C++ usar a convenção de nomes de C para uma função. Permite chamar e ser chamado por código C.
Onde usar
Aparece em headers de bibliotecas C e em plugins, protegido por #ifdef __cplusplus. Sem isso, o linker procura o nome com name mangling de C++ e acusa undefined reference.
Em código
#ifdef __cplusplus
extern "C" {
#endif
int soma(int a, int b);
#ifdef __cplusplus
}
#endifExemplos
Wrap the declarations in extern C so C can call them.
Embrulhe as declarações em extern C para o C poder chamá-las.
Without extern C, the linker can't find the symbol.
Sem extern C, o linker não acha o símbolo.
Cuidado
Só vale para a ligação do nome; não faz o código dentro virar C, e duas sobrecargas não podem ser extern C ao mesmo tempo.
Sinônimos
ligação C