Notice that the name of the GradeBook.h
header in line 4 of Fig. 3.10 is enclosed in quotes (" "
) rather than angle brackets (< >
). Normally, a program’s source-code files and user-defined headers are placed in the same directory. When the preprocessor encounters a header name in quotes, it attempts to locate the header in the same directory as the file in which the #include
directive appears. If the preprocessor cannot find the header in that directory, it searches for it in the same location(s) as the C++ Standard Library headers. When the preprocessor encounters a header name in angle brackets (e.g., <iostream>
), it assumes that the header is part of the C++ Standard Library and does not look in the directory of the program that’s being preprocessed.
Error-Prevention Tip 3.3
To ensure that the preprocessor can locate headers correctly, #include preprocessing directives should place user-defined headers names in quotes (e.g., "GradeBook.h") and place C++ Standard Library headers names in angle brackets (e.g., <iostream>).