Bird
Raised Fist0
Cprogramming~5 mins

Linking multiple files in C - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Linking multiple files
O(1)
Understanding Time Complexity

When we link multiple files in C, the program combines code from different places. We want to see how this affects the time it takes to run.

How does adding more files change the total work the program does?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

// file1.c
int sum(int a, int b) {
    return a + b;
}

// file2.c
#include <stdio.h>
int sum(int a, int b);

int main() {
    int result = sum(5, 7);
    printf("Sum is %d\n", result);
    return 0;
}

This code shows two files: one defines a function, the other calls it. They are linked to make one program.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The function call to sum happens once.
  • How many times: Exactly one time during program run.
How Execution Grows With Input

Since the function is called once, the total work stays about the same no matter how many files we link.

Input Size (number of files)Approx. Operations
11 function call
51 function call
101 function call

Pattern observation: Adding more files does not increase the number of times the function runs.

Final Time Complexity

Time Complexity: O(1)

This means the program runs in constant time because linking files does not add repeated work during execution.

Common Mistake

[X] Wrong: "More files always make the program slower because it has more code to run."

[OK] Correct: The program only runs the code it calls. Extra files add code but do not slow down execution unless their functions are used repeatedly.

Interview Connect

Understanding how linking affects program speed helps you explain how code organization impacts performance. This skill shows you think about both code structure and efficiency.

Self-Check

"What if the linked files contained functions called inside loops? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of linking multiple files in a C program?
easy
A. To organize code into separate files and combine them into one program
B. To run multiple programs at the same time
C. To convert C code into machine language
D. To write comments in different files

Solution

  1. Step 1: Understand code organization

    Linking multiple files allows splitting code into parts for better organization and reuse.
  2. Step 2: Understand linking process

    After compiling separately, linking combines these parts into one executable program.
  3. Final Answer:

    To organize code into separate files and combine them into one program -> Option A
  4. Quick Check:

    Linking = Combining files [OK]
Hint: Linking combines separate code files into one program [OK]
Common Mistakes:
  • Confusing linking with running multiple programs
  • Thinking linking converts code to machine language
  • Believing linking is for writing comments
2. Which command correctly compiles two C files main.c and utils.c together using GCC?
easy
A. gcc main.c -o program
B. gcc -o program -c main.c utils.c
C. gcc main.c utils.c -o program
D. gcc program -o main.c utils.c

Solution

  1. Step 1: Understand GCC command structure

    The correct syntax is: gcc [source files] -o [output file].
  2. Step 2: Check options order

    The standard GCC syntax is gcc [source files] -o [output], as in gcc main.c utils.c -o program.
  3. Final Answer:

    gcc main.c utils.c -o program -> Option C
  4. Quick Check:

    gcc source files -o output [OK]
Hint: Put source files first, then -o output [OK]
Common Mistakes:
  • Placing -o before source files
  • Mixing order of files and output option
  • Using output file name as source file
3. Given two files:
// file1.c
#include 
void greet() { printf("Hello from file1\n"); }

// file2.c
void greet();
int main() { greet(); return 0; }

What is the output after compiling and linking both files?
medium
A. Compilation error: greet not declared
B. Hello from file1
C. Runtime error: undefined reference to greet
D. No output

Solution

  1. Step 1: Check function declaration and definition

    file1.c defines greet() printing "Hello from file1"; file2.c declares greet() and calls it in main.
  2. Step 2: Linking files

    Compiling and linking both files connects the call to greet() with its definition, so it prints the message.
  3. Final Answer:

    Hello from file1 -> Option B
  4. Quick Check:

    Function call linked correctly = prints message [OK]
Hint: Declare functions in headers or files to link correctly [OK]
Common Mistakes:
  • Forgetting to link both files
  • Missing function declaration causing errors
  • Expecting runtime errors without linking
4. What is wrong with this setup?
// file1.c
void greet() { printf("Hi\n"); }

// file2.c
int main() { greet(); return 0; }

When compiling separately and linking, it gives an error. Why?
medium
A. Cannot compile multiple files separately
B. Missing #include in file1.c
C. main() should be in file1.c
D. greet() is not declared before use in file2.c

Solution

  1. Step 1: Check function declaration in file2.c

    file2.c calls greet() but does not declare it or include a header with its prototype.
  2. Step 2: Understand compiler error

    Without declaration, compiler errors occur because it doesn't know greet() signature.
  3. Final Answer:

    greet() is not declared before use in file2.c -> Option D
  4. Quick Check:

    Declare functions before use [OK]
Hint: Always declare functions before calling them [OK]
Common Mistakes:
  • Assuming definition is enough without declaration
  • Ignoring missing #include (not cause here)
  • Thinking main() must be in same file as greet()
5. You have three files:
// math_ops.c
int add(int a, int b) { return a + b; }

// math_ops.h
int add(int a, int b);

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

Which is the correct way to compile and link these files to produce an executable named calc?
hard
A. gcc main.c -c; gcc math_ops.c -c; gcc main.o math_ops.o -o calc
B. gcc main.c -o calc; gcc math_ops.c -o calc
C. gcc main.c math_ops.h -o calc
D. gcc main.c math_ops.c -c

Solution

  1. Step 1: Compile source files separately

    Use gcc -c to compile main.c and math_ops.c into object files main.o and math_ops.o.
  2. Step 2: Link object files

    Link main.o and math_ops.o together with gcc to create executable calc.
  3. Final Answer:

    gcc main.c -c; gcc math_ops.c -c; gcc main.o math_ops.o -o calc -> Option A
  4. Quick Check:

    Compile separately, then link object files [OK]
Hint: Compile with -c, then link object files [OK]
Common Mistakes:
  • Compiling header files directly
  • Overwriting executable by compiling twice
  • Not linking object files after compiling
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