#c #visual-c
#c #visual-c
Вопрос:
Я всегда думал, что я должен включать #include "Stdafx.h"
строку в самом верху каждого файла заголовка в проекте, как указано в описании. Я создал простое диалоговое приложение на основе MFC с помощью wizzard и обнаружил, что заголовочные файлы не содержат #include "Stdafx.h"
строк, но в файлах cpp они есть. Итак, когда я должен использовать #include "Stdafx.h"
строку в cpp, а когда в h one?
Комментарии:
1.
stdafx.h
предназначен для проектов с предварительно скомпилированными заголовками. Используйте его, когда вам нужны предварительно скомпилированные заголовки.
Ответ №1:
Краткий ответ: в a .h
: никогда; в a .cpp
, если и только если он настроен с предварительно скомпилированными заголовками (они по умолчанию).
Обоснование заключается в том, что #include "stdafx.h"
используется для включения предварительно скомпилированных заголовков (созданных при компиляции stdafx.cpp
). Для того, чтобы они были эффективными, они должны быть самой первой строкой модуля компиляции (не считая пробелов или комментариев). И эта самая первая строка не может быть в заголовочном файле, потому #include
что она включает ее первой!
Ответ №2:
Я бы рекомендовал использовать #include «stdafx.h» только в cpp-файлах, поскольку вы можете захотеть скомпилировать один cpp ‘с’ предварительно скомпилированными заголовками, а другой cpp ‘без’ предварительно скомпилированных заголовков.
Кроме того, когда вы создаете проекты с помощью мастера DevStudio, эти stdafx.h, включенные в cpp-файлы, будут находиться в файлах cpp.