By default, your project uses "using precompiled headers." You can set individual files to "do not use precompiled headers" if you wish.
In fact, stdafx.cpp itself is different from the default options:

What this configuration says is βstart compiling this file (stdafx.cpp), stop when you finish compiling the statement that includes stdafx.hβ, and save the precompiled information as a .pch file. "Visual studio is also smart enough to first compile this file so that it is available for use.
Project defaults:

This configuration says: "For each compiled file, start with the precompiled data in the specified .pch and start compiling new information after you include the stdafx.h point." This is important and why stdafx.h should be included in the first line of the file. It will still work if you put it later in the file, but nothing but #include is ignored because this data will not be in .pch. The absence of the #include means that VS scans the entire file looking for a precompiled source location, but does not detect it ... generates an error.
If you have a file that you do not want to use precompiled information, you can select the file and override it. Example:

Visual Studio will not use precompiled information and will not search for a title to include.
source share