extern keyword in C
For extern keyword to understand let us first discuss the difference between declaring a variable and defining a variable.The declaration of variable is simply declaring variable in the program that is it just exist somewhere in the program with no memory allocated to that variable.When the variable is declared program know the datatype of the variable.On the other hand when we say we defined a variable it means that a variable is declared and also section of memory is allocated to that variable in the program.The variable in a program can be declared various times but can only defined once.Now moving onto the "extern" keyword when we declare a variable with extern keyword the variable is only declared and not defined.
Let's understand this using some sample programs :
int a;
int main()
{
a=10;
printf("%d",a);
}
The above program is compiled successfully without any error because the variable "a" is declared and defined globally.So the variable has its own memory in the program and when we are assigning the value to variable "a", compiler can see that there is a memory location for the variable in the program so no error..
extern int a;
int main()
{
a=10;
printf("%d",a);
}
The above program will result in error because we are using extern keyword with variable that means we are declaring the variable but not defining it.So no memory has been allocated to the variable "a".And when we are assigning a value to the variable "a" compiler was not able to find the variable .That is we are trying to change the value of variable which doesn't even exist.So resulting in compilation error.
Now consider another example in which the variable is declared using extern keyword in one file and in another file the variable is defined.Lets take first file be "file1.c" and second file be "file2.h".
file1.c
#include "file2.h"
extern int a;
int main()
{
a=10;
printf("%d",a);
}
The above program execute successfully as long as there exists a file "file2.h" which defines the variable "a".
Now there is an exception in extern keyword declaration in some cases like when we declare a variable using extern keyword and at the same time initialize it using some value then this variable is not just declared anymore but also defined,that is the memory is allocated to that variable in the program.So in such cases the program will run successfully.
extern int a=1;
int main()
{
a=10;
printf("%d",a);
}
The above program will run successfully despite having extern keyword because it is declared as well as defined.
Let's understand this using some sample programs :
int a;
int main()
{
a=10;
printf("%d",a);
}
The above program is compiled successfully without any error because the variable "a" is declared and defined globally.So the variable has its own memory in the program and when we are assigning the value to variable "a", compiler can see that there is a memory location for the variable in the program so no error..
extern int a;
int main()
{
a=10;
printf("%d",a);
}
The above program will result in error because we are using extern keyword with variable that means we are declaring the variable but not defining it.So no memory has been allocated to the variable "a".And when we are assigning a value to the variable "a" compiler was not able to find the variable .That is we are trying to change the value of variable which doesn't even exist.So resulting in compilation error.
Now consider another example in which the variable is declared using extern keyword in one file and in another file the variable is defined.Lets take first file be "file1.c" and second file be "file2.h".
file1.c
#include "file2.h"
extern int a;
int main()
{
a=10;
printf("%d",a);
}
The above program execute successfully as long as there exists a file "file2.h" which defines the variable "a".
Now there is an exception in extern keyword declaration in some cases like when we declare a variable using extern keyword and at the same time initialize it using some value then this variable is not just declared anymore but also defined,that is the memory is allocated to that variable in the program.So in such cases the program will run successfully.
extern int a=1;
int main()
{
a=10;
printf("%d",a);
}
The above program will run successfully despite having extern keyword because it is declared as well as defined.
Comments
Post a Comment