У меня есть MyClass.cpp
и MyClass.h
. Поскольку MyClass.cpp
имеет #include "MyClass.h"
я помещаю stdafx.h
в MyClass.h
. Во время компиляции я получил ошибку:
неожиданный конец файла при поиске прекомпилированного заголовка. Вы забыли добавить '#include "stdafx.h" в свой источник?
Зачем? Если MyClass.cpp
включает MyClass.h
он должен включать все строки MyClass.h
и эти строки содержат stdafx.h
.
Неважно, если вы помещаете #include "stdafx.h"
в свой.h файл. Компилятору все равно. Он хочет видеть #include "stdafx.h"
в качестве первой строки вашего.cpp файла, если только у вас нет "Не использовать предварительно скомпилированные заголовки" в качестве параметра компилятора для вашего исходного файла. Обоснование имеет отношение к предварительно скомпилированным заголовкам. Я не могу предложить техническое объяснение, но просто это сделает жизнь проще.
Другое дело, если вы хотите, чтобы MyClass.h
был предварительно скомпилирован.
MyClass.h
не включает stdafx.h
stdafx.h
включает MyClass.h
MyClass.cpp
включает stdafx.h
в качестве первой директивы. Для ясности кода он может также включать MyClass.h
.
/Yu"stdafx.h"
, так что" stdafx.h "должен быть первым найденным заголовком, в противном случае он выдаст ошибкуC1010