Uso externo para especificar ligação
extern string-literal { declaration-list }
extern string-literal declaration
Comentários
O extern declara uma variável ou função de palavra-chave e especifica que ela tem ligação externa (seu nome é visível a partir de arquivos diferente no qual ela está definida).Ao modificar uma variável, extern Especifica que a variável tem duração estática (ela é alocada quando o programa é iniciado e desalocada quando o programa termina).A variável ou função pode ser definida em outro arquivo de origem, ou mais tarde no mesmo arquivo.Declarações de variáveis e funções no escopo do arquivo são externas por padrão.
Exemplo
// specifying_linkage1.cpp
int i = 1;
void other();
int main() {
// Reference to i, defined above:
extern int i;
}
void other() {
// Address of global i assigned to pointer variable:
static int *external_i = &i;
// i will be redefined; global i no longer visible:
// int i = 16;
}
No C++, quando usado com uma seqüência de caracteres, extern Especifica que as convenções de ligação de um outro idioma estão sendo usadas para o declarator(s).Funções c e os dados podem ser acessados somente se eles anteriormente são declarados como tendo ligação C.No entanto, eles devem ser definidos em uma unidade de conversão compilado separadamente.
Microsoft C++ oferece suporte para as seqüências de caracteres "C" e "C++" na seqüência literal campo.Todos do padrão incluem o uso de arquivos de extern sintaxe de "C" para permitir que as funções da biblioteca de tempo de execução ser usado em programas em C++.
O exemplo a seguir mostra maneiras alternativas para declarar nomes que têm ligação C:
// specifying_linkage2.cpp
// compile with: /c
// Declare printf with C linkage.
extern "C" int printf( const char *fmt, ... );
// Cause everything in the specified header files
// to have C linkage.
extern "C" {
// add your #include statements here
#include <stdio.h>
}
// Declare the two functions ShowChar and GetChar
// with C linkage.
extern "C" {
char ShowChar( char ch );
char GetChar( void );
}
// Define the two functions ShowChar and GetChar
// with C linkage.
extern "C" char ShowChar( char ch ) {
putchar( ch );
return ch;
}
extern "C" char GetChar( void ) {
char ch;
ch = getchar();
return ch;
}
// Declare a global variable, errno, with C linkage.
extern "C" int errno;
Consulte também
Referência
Especificador de classe de armazenamento extern