Цель stdafx.h [дубликат]

Этот вопрос уже имеет ответ здесь:

Какова цель файла stdafx.h и что предназначено предварительно скомпилированными заголовками?

38
задан DavidRR 18 January 2013 в 15:21
поделиться

4 ответа

stdafx.h - это файл, создаваемый мастерами Microsoft Visual Studio IDE, который описывает как стандартные системные и специфические для проекта включаемые файлы которые часто используются, но практически не часто используются, но почти не изменяются. Совместимые компиляторы (например, Visual C++ 6.0 и новее) предварительно компилировать этот файл, чтобы уменьшить общее время компиляции.

Visual C++ не будет не компилировать ничего перед #include "stdafx.h" в исходном файле, если только не будет использована опция компиляции /Yu'stdafx.h' не отмечена (по по умолчанию); при этом предполагается, что весь код в до этой строки включительно уже скомпилирован.

http://en.wikipedia.org/wiki/Precompiled_header

29
ответ дан 27 November 2019 в 03:48
поделиться

Обычно оно используется для названия предварительно скомпилированных заголовков. Хотя использование именно этого имени не обязательно, оно просто используется по умолчанию. Более подробно о прекомпилированных заголовках на VC++ и g++ я рассказываю здесь.

Вы используете прекомпилированные заголовки для более быстрой компиляции.

Идея заключается в том, что вы помещаете любой заголовочный файл, который не будет меняться и который вы используете в нескольких исходных файлах, внутрь вашего прекомпилированного заголовка. Тогда компилятору не нужно будет обрабатывать эти заголовки для каждой единицы компиляции.

6
ответ дан 27 November 2019 в 03:48
поделиться

Чтобы расширить другие отличные ответы:

stdafx.h - это файл, который включает все часто используемые заголовки для одного проекта. Это может включать, например, все определения Windows. Поскольку этот файл включает в себя так много всего, компилятор немного тормозит при его обработке. Путем предварительной компиляции компилятор может пропустить большую часть обработки и повторно использовать ее снова и снова; пока ни один из файлов, включенных в него, не изменится, предварительно скомпилированный результат также не нужно изменять.

Имя stdafx.h является условным. Вы можете легко переименовать его во что-нибудь другое, если вы измените все свои источники, чтобы вместо этого включить новый файл.

Для создания фактического предварительно скомпилированного файла заголовка вам понадобится один исходный файл в проекте, который имеет специальные флаги компиляции для создания предварительно скомпилированного вывода. По соглашению этот файл называется stdafx.cpp , и если вы проверите настройки для этого исходного файла, вы увидите, чем он отличается.

13
ответ дан 27 November 2019 в 03:48
поделиться

Это предварительно скомпилированный заголовок , чтобы сократить время компиляции.

2
ответ дан 27 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: