Bird
Raised Fist0
Cprogramming~30 mins

Header and source file organization - Mini Project: Build & Apply

Choose your learning style10 modes available
Header and source file organization
📖 Scenario: You are creating a simple C program that calculates the area of a rectangle. To keep your code clean and organized, you will separate the function declaration and definition into a header file and a source file.
🎯 Goal: Build a C program that uses a header file to declare a function and a source file to define it, then call the function from main.c to calculate and print the area of a rectangle.
📋 What You'll Learn
Create a header file rectangle.h with a function prototype for int area(int width, int height);
Create a source file rectangle.c that includes rectangle.h and defines the area function
Create a main.c file that includes rectangle.h, calls area with width 5 and height 10, and prints the result
Use proper include guards in the header file
💡 Why This Matters
🌍 Real World
Organizing code into header and source files is a common practice in C programming to keep code clean, reusable, and easier to maintain.
💼 Career
Understanding how to separate declarations and definitions and compile multiple files is essential for working on real-world C projects and collaborating with other developers.
Progress0 / 4 steps
1
Create the header file with function prototype
Create a header file named rectangle.h. Inside it, write include guards using #ifndef RECTANGLE_H, #define RECTANGLE_H, and #endif. Between the guards, declare the function prototype int area(int width, int height);.
C
Hint

Include guards prevent the header file from being included multiple times. The function prototype tells the compiler about the function's name, return type, and parameters.

2
Define the area function in the source file
Create a source file named rectangle.c. Include the header file rectangle.h at the top. Define the function int area(int width, int height) that returns the product of width and height.
C
Hint

Include the header file with double quotes. The function should multiply width and height and return the result.

3
Write the main program to use the area function
Create a source file named main.c. Include the header file rectangle.h. In the main function, call area with arguments 5 and 10, store the result in an int variable named result, and then print "Area: " followed by the result using printf.
C
Hint

Remember to include stdio.h for printf. The main function should return 0.

4
Compile and run the program to see the output
Compile the program files main.c and rectangle.c together and run the executable. The program should print Area: 50.
C
Hint

Use a command like gcc main.c rectangle.c -o program to compile, then run ./program to see the output.

Practice

(1/5)
1. What is the main purpose of a header file in C programming?
easy
A. To execute the program's main logic
B. To declare functions and variables for sharing between source files
C. To contain the actual implementation code of functions
D. To store compiled machine code

Solution

  1. Step 1: Understand header file role

    Header files declare functions and variables so multiple source files can use them.
  2. Step 2: Differentiate from source files

    Source files contain the actual code, not declarations.
  3. Final Answer:

    To declare functions and variables for sharing between source files -> Option B
  4. Quick Check:

    Header files declare, source files define [OK]
Hint: Headers declare, sources define code [OK]
Common Mistakes:
  • Confusing header files as containing code
  • Thinking header files execute code
  • Mixing compiled code with header files
2. Which of the following is the correct way to include a header file named math_utils.h in a C source file?
easy
A. #include
B. import math_utils.h
C. #include "math_utils.h"
D. include math_utils.h

Solution

  1. Step 1: Identify correct include syntax for user headers

    User-defined headers use double quotes: #include "filename".
  2. Step 2: Differentiate from system headers

    System headers use angle brackets, but user headers like math_utils.h use quotes.
  3. Final Answer:

    #include "math_utils.h" -> Option C
  4. Quick Check:

    User headers use quotes [OK]
Hint: Use quotes for your own headers [OK]
Common Mistakes:
  • Using angle brackets for user headers
  • Using import instead of #include
  • Omitting # in include directive
3. Given these files:
// math_utils.h
int add(int a, int b);

// math_utils.c
#include "math_utils.h"
int add(int a, int b) { return a + b; }

// main.c
#include 
#include "math_utils.h"
int main() {
    printf("%d\n", add(3, 4));
    return 0;
}

What will be the output when running the compiled program?
medium
A. 7
B. 34
C. 0
D. Compilation error

Solution

  1. Step 1: Understand function declaration and definition

    math_utils.h declares add(), math_utils.c defines it to return sum of a and b.
  2. Step 2: Trace main function call

    main.c calls add(3, 4), which returns 7, then prints it.
  3. Final Answer:

    7 -> Option A
  4. Quick Check:

    3 + 4 = 7 [OK]
Hint: Function returns sum, so output is 7 [OK]
Common Mistakes:
  • Thinking add concatenates numbers
  • Expecting compilation error due to missing code
  • Confusing printf format
4. Consider this code snippet:
// utils.h
void print_message();

// utils.c
#include "utils.h"
void print_message() {
    printf("Hello!\n");
}

// main.c
#include "utils.h"
int main() {
    print_message();
    return 0;
}

When compiling, an error says implicit declaration of function 'printf'. What is the fix?
medium
A. Add #include <stdio.h> in utils.c
B. Add #include <stdio.h> in utils.h
C. Add #include <stdio.h> in main.c
D. Remove print_message function

Solution

  1. Step 1: Identify cause of error

    printf is declared in stdio.h; utils.c uses printf but lacks this include.
  2. Step 2: Fix by including stdio.h in utils.c

    Adding #include <stdio.h> in utils.c provides printf declaration, fixing error.
  3. Final Answer:

    Add #include <stdio.h> in utils.c -> Option A
  4. Quick Check:

    Include stdio.h where printf is used [OK]
Hint: Include stdio.h in files using printf [OK]
Common Mistakes:
  • Including stdio.h only in header file
  • Including stdio.h only in main.c
  • Ignoring missing printf declaration
5. You want to organize a C project with multiple source files sharing utility functions. Which is the best practice for header and source file organization?
hard
A. Put function definitions in header files and include them everywhere
B. Put function declarations and definitions together in each source file without headers
C. Put all code in a single source file without headers
D. Put all function declarations in one header file and definitions in one source file, then include the header where needed

Solution

  1. Step 1: Understand modular organization

    Separating declarations in headers and definitions in source files allows sharing and reuse.
  2. Step 2: Avoid putting definitions in headers

    Definitions in headers cause multiple definition errors when included in many files.
  3. Final Answer:

    Put all function declarations in one header file and definitions in one source file, then include the header where needed -> Option D
  4. Quick Check:

    Headers declare, sources define, include headers [OK]
Hint: Declare in headers, define in sources, include headers [OK]
Common Mistakes:
  • Defining functions in headers causing linker errors
  • Not using headers causing duplicate declarations
  • Putting all code in one file reducing modularity
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard