¿Qué significa la palabra clave extern?


¿Qué significa la palabra clave extern? He visto que delante de una declaración de función como

extern void DoFoo ...
Author: Gordon Gustafson, 2010-05-02

3 answers

extern da un nombre enlace externo. Esto significa que el objeto o función es accesible a través de este nombre desde otras unidades de traducción en el programa. Para las funciones, este es el enlace predeterminado en cualquier caso, por lo que su uso (en este contexto) suele ser redundante.

 41
Author: CB Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-02 15:41:41

La palabra clave extern declara una variable o función y especifica que tiene enlace externo (su nombre es visible desde archivos distintos de aquel en el que está definida). Cuando se modifica una variable, extern especifica que la variable tiene una duración estática (se asigna cuando comienza el programa y se desasigna cuando termina el programa). La variable o función se puede definir en otro archivo fuente, o posteriormente en el mismo archivo. Las declaraciones de variables y funciones en el ámbito del archivo son externas predeterminada.

Puede encontrar una descripción más completa aquí.

 40
Author: Romain Hippeau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-20 05:36:47

Para principiantes,

Inicialmente me confundí al saber que, " la palabra clave extern declara una variable o función y especifica que tiene enlace externo " por @Romain Hippeau.

Ahora entiendo que, vamos a ser capaces de compartir nuestras variables con otras clases a través de extern palabra clave.

Por Ejemplo: Notificación.h

 #import <Foundation/Foundation.h>
 extern const NSString* notificationConstant;

Notificación.m

 #import "Notification.h"
 const NSString* notificationConstant = @"NotificationConstant";

Importando notificación.h en cualquiera de mis otras clases, puedo leer el valor de string NotificationConstant (en inglés).

Sin la palabra clave extern Para la constante de Notificación creará el siguiente error. introduzca la descripción de la imagen aquí

 2
Author: Sujananth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-17 06:13:18