'How do I share a global variable between c files?
If I define a global variable in a .c file, how can I use the same variable in another .c file?
file1.c:
#include<stdio.h>
int i=10;
int main()
{
printf("%d",i);
return 0;
}
file2.c:
#include<stdio.h>
int main()
{
//some data regarding i
printf("%d",i);
return 0;
}
How can the second file file2.c use the value of i from the first file file1.c?
Solution 1:[1]
file 1:
int x = 50;
file 2:
extern int x;
printf("%d", x);
Solution 2:[2]
Use the extern keyword to declare the variable in the other .c file. E.g.:
extern int counter;
means that the actual storage is located in another file. It can be used for both variables and function prototypes.
Solution 3:[3]
using extern <variable type> <variable name> in a header or another C file.
Solution 4:[4]
In the second .c file use extern keyword with the same variable name.
Solution 5:[5]
Do same as you did in file1.c In file2.c:
#include <stdio.h>
extern int i; /*This declare that i is an int variable which is defined in some other file*/
int main(void)
{
/* your code*/
If you use int i; in file2.c under main() then i will be treated as local auto variable not the same as defined in file1.c
Solution 6:[6]
Use extern keyword in another .c file.
Solution 7:[7]
If you want to use global variable i of file1.c in file2.c, then below are the points to remember:
- main function shouldn't be there in file2.c
- now global variable i can be shared with file2.c by two ways:
a) by declaring with extern keyword in file2.c i.e extern int i;
b) by defining the variable i in a header file and including that header file in file2.c.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Rocky Pulley |
| Solution 2 | mdm |
| Solution 3 | Murali VP |
| Solution 4 | Asha |
| Solution 5 | Matt Sieker |
| Solution 6 | Kiran Padwal |
| Solution 7 | bharaniprakash tumu |
