Compartir a través de


Mediante extern para especificar Linkage

extern string-literal { declaration-list }
extern string-literal declaration

Comentarios

La palabra clave de extern declara una variable o una función y los especifica con vinculación externa (nombre está visible de archivos distinto de en el que tiene definido).Al modificar una variable, extern especifica que la variable tiene duración estática (se asigna cuando se inicia el programa y desasignó cuando finaliza el programa).La variable o la función puede definirse en otro archivo de código fuente, o posterior en el mismo archivo.Las declaraciones de variables y funciones en el ámbito de archivo son externas de forma predeterminada.

Ejemplo

// 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;
}

En C++, cuando se usa con una cadena, extern especifica que las convenciones de vinculación desde otro lenguaje se usan para los declarantes.Funciones de c y los datos sólo son accesibles si se declaran previamente como si tuvieran vinculación c.Sin embargo, deben definirse en una unidad de traducción por separado compilada.

Microsoft C++ admite las cadenas “C” y “C++” en el campo cadena- literal .Todos los archivos de inclusión estándar utilizan la sintaxis de extern “C” para permitir que las funciones de la biblioteca en tiempo de ejecución se utilizarán en programas de C++.

El ejemplo siguiente muestra maneras alternativas de declarar los nombres que tienen vinculación 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;

Vea también

Referencia

Palabras clave de C++

Especificaciones de vinculación

especificador extern de clase de almacenamiento

Conceptos

Comportamiento de identificadores

Vinculación