What does the extern keyword mean?

CObjective CExtern

C Problem Overview

What does the extern keyword mean? I've seen that in front of an function declaration like

extern void DoFoo ...

C Solutions

Solution 1 - C

The extern keyword declares a variable or function and specifies that it has external linkage (its name is visible from files other than the one in which it's defined). When modifying a variable, extern specifies that the variable has static duration (it is allocated when the program begins and deallocated when the program ends). The variable or function may be defined in another source file, or later in the same file. Declarations of variables and functions at file scope are external by default.

You can find a more complete description here.

Solution 2 - C

extern gives a name external linkage. This means that the object or function is accessible through this name from other translation units in the program. For functions, this is the default linkage in any case so its usage (in this context) is usually redundant.

Solution 3 - C

For Beginners,

Initially I was confused to learn that, "the extern keyword declares a variable or function and specifies that it has external linkage " by @Romain Hippeau.

Now I understood that, we will be able to share our variables with other classes through extern keyword.

For Example: Notification.h

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


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

By importing notification.h in any of my other classes, I can read the value of string NotificationConstant.

Without extern keyword For Notification constant will create following error. enter image description here


All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondontWatchMyProfileView Question on Stackoverflow
Solution 1 - CRomain HippeauView Answer on Stackoverflow
Solution 2 - CCB BaileyView Answer on Stackoverflow
Solution 3 - CSujananthView Answer on Stackoverflow