Почему мы используем '#include " stdafx.h "'вместо' #include'?
С здесь, сказано, что:
для #include "filename" препроцессор ищет в том же каталог как файл, содержащий директиву. Этот метод обычно используется для включения файлов заголовков, определенных программистом.
для #включить поиск препроцессора в реализацию зависимый способ, обычно в каталогах поиска, предварительно назначенных компилятора/среды разработки. Этот метод обычно используется для включения стандарта библиотека заголовочный файл.
пока эта Вики-ссылке говорит о том, что stdafx.h
является заголовочным файлом, предварительно разработанным visual studio IDE
stdafx.h-файл, созданный мастерами IDE Microsoft Visual Studio, это описывает как стандартные системные, так и специфические для проекта файлы include они используются часто, но почти никогда не меняются.
совместимые компиляторы (например, Visual C++ 6.0 и новее) будет предварительно скомпилируйте этот файл в сократите общее время компиляции. Visual C++ будет не компилируйте ничего перед #include " stdafx.h " в источнике файл, если только параметр компиляции /Yu'stdafx.h ' не установлен (by по умолчанию); он предполагает весь код в источнике до и включая это линия уже собрана.
в AFX в файл stdafx.h означает расширения рамок приложений. Компании AFX была оригинальной аббревиатурой для классов Microsoft Foundation (МФЦ.) Пока имя stdafx.H используется по умолчанию, проекты может указать альтернативное имя.
затем
почему мы используем #include "stdafx.h"
вместо #include <stdafx.h>
?
3 ответов
A stdafx.h
, stdafx.cpp
пара генерируется VS из шаблона. Он находится в том же каталоге, что и остальные файлы. Вероятно, вы в конечном итоге измените его специально для своего проекта. Поэтому мы используем ""
вместо <>
именно по той причине, что он находится в том же каталоге, что и ваша первая цитата.
, потому что stdafx.h
для каждого проекта. Как вы цитировали,#include ""
поиск пути текущего проекта, и это где есть.
используя #include <stdafx.h>
будет огромный ошибка, потому что она должна быть в пути к библиотеке (где расположены все стандартные заголовки библиотеки). Это означает, что вы не должны изменять его или что он всегда остается неизменным, но он никогда не бывает одинаковым для разных проектов.
поэтому, хотя он генерируется Visual Studio, он специфичен для проекта, а не для всех проектов.
В общем случае для данного имени файла include.ч, синтаксис #include <name>
зарезервирован для стандартные библиотеки, а #include "name.h"
используется для пользовательских файлов. Там "пользователь" может означать любого разработчика, реализующего нестандартные функции, например, для конкретного пакета компилятора.
соответственно, препроцессор выполняет поиск файлов include по соответствующим путям, указанным в Системных настройках. Обратите внимание не только на разницу между скобками и цитаты, но и различное использование *.продление сек.