📖 Scenario: You are working on a simple C program split into two files. One file holds a variable, and the other file uses that variable. To share the variable between files, you use the extern storage class.
🎯 Goal: Build a program with two files where one file declares a variable and the other file accesses it using extern. You will see how extern helps share variables across files.
📋 What You'll Learn
Create a global variable count in one file
Declare extern int count; in the other file
Modify count in the second file
Print the updated count value in the second file
💡 Why This Matters
🌍 Real World
Sharing variables across multiple files is common in large C programs to organize code and data.
💼 Career
Understanding <code>extern</code> is essential for working on multi-file C projects, embedded systems, and system programming.
Progress0 / 4 steps
1
Create a global variable in file1.c
In file1.c, create a global integer variable called count and set it to 10.
C
Hint
Global variables are declared outside any function.
2
Declare extern variable in file2.c
In file2.c, declare the variable count using extern int count; to tell the compiler it is defined elsewhere.
C
Hint
The extern keyword tells the compiler the variable is defined in another file.
3
Modify count in file2.c
In file2.c, write a function called increment that adds 5 to count.
C
Hint
Functions can change the value of global variables.
4
Print the updated count in file2.c
In file2.c, write a main function that calls increment() and then prints the value of count using printf.
C
Hint
Remember to include stdio.h to use printf.
Practice
(1/5)
1. What is the main purpose of the extern storage class in C?
easy
A. To declare a variable or function defined in another file
B. To allocate memory for a variable inside a function
C. To create a constant variable
D. To define a variable local to a block
Solution
Step 1: Understand the role of extern
The extern keyword tells the compiler that the variable or function is defined elsewhere, usually in another file.
Step 2: Compare with other storage classes
Other options like local variables or constants do not use extern. It specifically helps share variables/functions across files.
Final Answer:
To declare a variable or function defined in another file -> Option A
Quick Check:
extern declares external variables [OK]
Hint: Remember: extern means 'defined outside this file' [OK]
Common Mistakes:
Confusing extern with static
Thinking extern allocates memory
Using extern for local variables
2. Which of the following is the correct syntax to declare an external integer variable named count?
easy
A. int extern count;
B. extern int count;
C. extern int count = 0;
D. static extern int count;
Solution
Step 1: Recall correct extern declaration syntax
The correct syntax places extern before the type: extern int count;
Step 2: Check invalid options
int extern count; reverses order, which is invalid. extern int count = 0; initializes the extern variable, which is not allowed. static extern int count; combines static and extern, which conflicts.
Final Answer:
extern int count; -> Option B
Quick Check:
extern before type, no initialization [OK]
Hint: extern must come before type and no initialization [OK]
Common Mistakes:
Initializing extern variables
Placing extern after type
Combining extern with static
3. Consider two files: // file1.c int count = 5; // file2.c extern int count; printf("%d", count); What will be the output when these files are compiled and run together?
medium
A. 5
B. 0
C. Compilation error
D. Undefined behavior
Solution
Step 1: Understand extern linking
The variable count is defined in file1.c with value 5. The extern declaration in file2.c refers to the same variable.
Step 2: Predict output
Since count is defined and initialized in file1.c, printing it in file2.c outputs 5.
Final Answer:
5 -> Option A
Quick Check:
extern links to defined variable value [OK]
Hint: Extern links to defined variable, prints its value [OK]
Common Mistakes:
Assuming extern creates a new variable
Expecting zero as default
Ignoring multi-file linking
4. What is wrong with the following code snippet?
extern int value = 10; int main() { printf("%d", value); return 0; }
medium
A. No variable named value declared
B. Missing semicolon after extern declaration
C. extern variable cannot be initialized
D. printf syntax is incorrect
Solution
Step 1: Check extern initialization rules
An extern declaration cannot initialize the variable. Initialization must be done in exactly one place without extern.
Step 2: Identify error in code
The code tries to initialize value with 10 in the extern declaration, which causes a compilation error.
Final Answer:
extern variable cannot be initialized -> Option C
Quick Check:
extern declarations must not initialize [OK]
Hint: Never initialize extern variables where declared [OK]
Common Mistakes:
Initializing extern variables
Confusing extern with normal definitions
Ignoring linker errors
5. You have two files: // file1.c int total = 100; void update() { total += 50; } // file2.c extern int total; void update(); int main() { update(); printf("%d", total); return 0; } What will be the output when compiled and run together?
hard
A. Compilation error due to missing extern
B. 100
C. Undefined behavior due to multiple definitions
D. 150
Solution
Step 1: Understand extern and function usage
total is defined in file1.c and declared extern in file2.c. The function update() modifies total.
Step 2: Trace program execution
Main calls update(), which adds 50 to total (100 + 50 = 150). Then it prints total, so output is 150.
Final Answer:
150 -> Option D
Quick Check:
Extern shares variable; function updates value [OK]
Hint: Extern shares variable; function changes value before print [OK]
Common Mistakes:
Expecting original value without update
Forgetting to declare extern
Confusing declaration and definition
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.