Splitting code into multiple files helps keep your program organized and easier to manage. It also allows you to reuse code in different parts of your project.
Splitting code into multiple files
# File1.c // Your code here // File2.c // Your code here // Compile with: gcc File1.c File2.c -o program
Each file can contain functions or code related to a specific task.
You compile all files together to create the final program.
add in one file and the main program in another file calling it.// File: math_utils.c #include <stdio.h> int add(int a, int b) { return a + b; } // File: main.c #include <stdio.h> int add(int a, int b); // Function declaration int main() { int result = add(3, 4); printf("Sum is %d\n", result); return 0; }
myprogram.// Compile command:
gcc main.c math_utils.c -o myprogramThis program splits the greeting function into greetings.c and the main logic into main.c. When compiled together, the program prints messages from both files.
// File: greetings.c #include <stdio.h> void say_hello() { printf("Hello from another file!\n"); } // File: main.c #include <stdio.h> void say_hello(); // Declare the function from greetings.c int main() { printf("Starting program...\n"); say_hello(); return 0; }
Always declare functions in the file where you use them if they are defined in another file.
You can also use header files (.h) to declare functions and share them between files, but this example keeps it simple.
Splitting code into multiple files helps organize and reuse code.
Compile all source files together to build the program.
Declare functions before using them if they are in different files.
Practice
Solution
Step 1: Understand code organization
Splitting code into multiple files helps keep related code parts separate and easier to manage.Step 2: Recognize code reuse benefit
It also allows reusing code in different programs without rewriting it.Final Answer:
To organize code and make it reusable -> Option CQuick Check:
Splitting code = Organize and reuse [OK]
- Assuming splitting files makes code run faster
- Thinking header files are not needed
- Believing it reduces variables automatically
utils.h in a C source file?Solution
Step 1: Understand header file inclusion syntax
To include your own header files, use double quotes around the filename.Step 2: Differentiate system and user headers
Angle brackets are for system headers, double quotes for user headers like utils.h.Final Answer:
#include "utils.h" -> Option DQuick Check:
User header files use "filename" [OK]
- Using angle brackets for user headers
- Omitting # in include directive
- Not using quotes or brackets around filename
// file1.c
#include
void greet();
int main() {
greet();
return 0;
}// file2.c
#include
void greet() {
printf("Hello from file2!\n");
}What is the output when compiled and run together?
Solution
Step 1: Check function declaration and definition
file1.c declares greet() and calls it; file2.c defines greet() printing the message.Step 2: Understand linking multiple files
Compiling both files together links greet() correctly, so the program prints the message.Final Answer:
Hello from file2! -> Option AQuick Check:
Function declared and defined across files prints message [OK]
- Forgetting to compile both files together
- Missing function declaration in file1.c
- Expecting compilation error due to separate files
// main.c
#include "helper.h"
int main() {
print_message();
return 0;
}// helper.c
#include
void print_message() {
printf("Hi!\n");
}// helper.h void print_message();
Compiling with
gcc main.c gives an error: undefined reference to 'print_message'. What is the likely cause?Solution
Step 1: Understand the error message
"undefined reference" means the linker can't find the function definition.Step 2: Check compilation command
If helper.c is not compiled or linked, the function print_message() is missing at link time.Final Answer:
helper.c was not compiled or linked properly -> Option BQuick Check:
Linker error = missing compiled file [OK]
- Not compiling helper.c with main.c
- Ignoring linker errors thinking it's a syntax error
- Assuming declaration alone is enough
main.c and math_ops.c. math_ops.c defines int add(int a, int b). How should you organize files and compile to use add in main.c correctly?Solution
Step 1: Create a header file math_ops.h
Declare the function prototype int add(int a, int b); in math_ops.h.Step 2: Include math_ops.h in main.c and compile both files
Include math_ops.h in main.c to use add(), then compile with gcc main.c math_ops.c to link both.Final Answer:
Declare add in math_ops.h, include it in main.c, compile with gcc main.c math_ops.c -> Option AQuick Check:
Header declares, source defines, compile both [OK]
- Including .c files instead of headers
- Not declaring functions before use
- Compiling only one source file
Ready to prove it?
Pass the test and this pattern moves unknown
