stdafx.h должно быть первым включением в КАЖДЫЙ файл cpp в вашем проекте.
Учтите, что
C ++ не компилируетсязаголовочные файлы, только файлы Cpp .
Поэтому, если stdafx является первым включением в файл cpp, тогда у компилятора будет все, что нужно заголовочному файлу, когда он достигнет заголовочного файла в файле Cpp .
например,
У вас есть A.cpp & Ah
А-а нуждается в std: string.
у вас есть B.cpp & Bh
Bh нужен Ah, поэтому Bh также нужен std :: string.
Поскольку это хорошая практика, вы помещаете #include <string>
в stdafx.h.
Ваша сборка завершается неудачно, потому что std не видит ничего:: string
Теперь поместите stafx.h как первое включение в A.cpp и B.cpp.
Когда компилятор нажимает A.cpp, он выбирает включение для <string>
, затем выбираетup Ах, и все счастливы, потому что мы знаем, что такое std :: string.
Компилятор теперь запускает B.cpp, снова он сначала включает stdafx, что приносит <string>
,затем нажимает Bh, что возвращает Ah, который снова счастлив, потому что std :: string уже включен.
Надеюсь, это поможет.