The following examples show the interaction of options and #pragma hdrfile directives:
Example 1
#pragma hdrfile "fred.pch"
#include "h1.h"
#include "h2.h"
main () {}
| Options Specified | Behavior |
| /Fi+ /Si+ | The headers "h1.h" and "h2.h" are
precompiled using the file "fred.pch" |
| /Fidave.pch | The compiler ignores the name specified with the option, because it is in conflict with the #pragma hdrfile directive. The compiler generates new headers in "fred.pch", but does not use them. |
Example 2
#pragma hdrfile "fred.pch"
#include "h1.h"
#pragma hdrstop
#include "h2.h"
main () {}
| Options Specified | Behavior |
| /Fi+ /Si+ | Only the header "h1.h" is precompiled,
using the file "fred.pch" |
| /Sidave.pch |
The compiler ignores the name specified with the option, because it is in conflict with the #pragma hdrfile directive. The compiler looks for the precompiled headers in "fred.pch", but does not generate new headers. |
Example 3
#include "h1.h"
#pragma hdrstop
#include "h2.h"
main () {}
| Options Specified | Behavior |
| /Fi+ /Si+ |
Only the header "h1.h" is precompiled,
using the file "csetc.pch" (for a C file) or
"csetcpp.pch" (for a C++ file) |
| /Sidave.pch /Fijohn.pch |
The compiler ignores the name specified with /Si, and uses the file "john.pch", which is specified later. The compiler looks for precompiled headers in "john.pch" and regenerates them if they are not found or are out of date. |
Example 4
#pragma hdrstop
#include "h1.h"
main () {}
| Options Specified | Behavior |
| Any options | No headers are precompiled, because there is no
initial sequence: #pragma hdrstop occurs before the first
include directive. |
![]()
Create Precompiled Header Files