Difficulty: Easy
Correct Answer: A preprocessing fatal error is generated and translation stops (for example, fatal error: file not found)
Explanation:
Introduction / Context:
Understanding the include search mechanism is essential for diagnosing build failures. The preprocessor must locate headers named by #include. When it cannot, the translation unit cannot be correctly formed.
Given Data / Assumptions:
Concept / Approach:
The preprocessor attempts to open the requested header, searching according to implementation-defined but documented rules (current directory and user-specified paths for quotes; system include paths for angle brackets). Failure to locate the file constitutes a preprocessing error, and translation must not continue because the source text is incomplete.
Step-by-Step Solution:
Encounter #include directive.Perform header search in the appropriate order for the directive form.If the file is not found in any path, emit a diagnostic like “fatal error: file.h: No such file or directory”.Abort preprocessing/compilation of that translation unit.
Verification / Alternative check:
Create a minimal program that includes a non-existent header and observe that preprocessing stops with a fatal error; no object file is produced.
Why Other Options Are Wrong:
Warnings or silent skips would produce an incomplete translation unit; the standard requires a diagnostic. Linker errors occur later but only if compilation succeeded; here it does not. Auto-creating headers is not a standard feature.
Common Pitfalls:
Misconfiguring include paths; mixing angle brackets and quotes incorrectly; assuming the compiler searches project directories automatically without configuration.
Final Answer:
A preprocessing fatal error is generated and translation stops (for example, fatal error: file not found)
Discussion & Comments