Consistency Rules for /YX

If a precompiled header file exists (either MSVC.PCH or one specified by /Fpfilename), it is compared to the current compilation for consistency. Unless the following requirements are met, a new precompiled header file is created and the new file overwrites the old:

  • The current compiler options must match those specified when the precompiled header was created.

  • The current working directory must match that specified when the precompiled header was created.

  • The order and values of all #include and #pragma directives must match those specified when the precompiled header was created. These, along with #define directives, are checked one by one as they appear during subsequent compilations that use the precompiled header. The values of #define directives must match. However, a sequence of #define directives need not occur in exactly the same order because there are no semantic order dependencies for #define directives. The #pragma directives must be nearly identical, with a few exceptions; for example, multiple spaces outside of strings are treated as a single space to allow for different programming styles.

  • The value and order of include paths specified on the command line with /I options must match those specified when the precompiled header was created.

  • The time stamps of all the header files (all files specified with #include directives) used to build the precompiled header must match those that existed when the precompiled header was created.