Phase I - the source file arrives at the input preprocessor. Preprocessor makes content substitution of the specified in the #include files and expands macros. It corresponds to the phases 1 - 4 of the C11 and C++17 drafts. Phase II - the preprocessed file arrives at the compiler and gets converted to an object file. It corresponds to the phases 5 - 7 of the C11 draft and 5 - 8 of the C++17 draft.
![Speeding up the Build of C and C++ Projects](https://cdn-ak-scissors.b.st-hatena.com/image/square/f3c4752c7cd076c64b1808f9c2b1d1772ac835cf/height=288;version=1;width=512/https%3A%2F%2Fcdn.pvs-studio.com%2Fmedia%2Fdocx%2Fblog%2F0549_Reducing_build_time%2Fimage1_thm_intoblank_1200x630.png%3Fver%3D07-27-2023-02-50-26)