Предварительно скомпилированные заголовки

какой формат?

при построении объекта даты Javascript можно просто вычесть их для получения различия в миллисекундах (редактирование: или просто сравните их):

js>t1 = new Date()
Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time)
js>t2 = new Date()
Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time)
js>t2-t1
2672
js>t3 = new Date('2009 Jan 1')
Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time)
js>t1-t3
2470768442
js>t1>t3
true

31
задан akif 18 August 2009 в 12:48
поделиться

3 ответа

Что такое предварительно скомпилированные заголовки?

Часто исходные файлы C ++ включают заголовки из внешних библиотек. В Windows вы включаете windows.h . Эти файлы заголовков могут быть очень большими, и для их обработки требуется некоторое время. Каждый раз, когда вы компилируете файл C ++, компилятор должен читать и обрабатывать тысячи строк из этих файлов заголовков. Но внешние библиотеки не меняются, и вы можете сэкономить много времени, если обработаете эти файлы только один раз и сохраните результат.

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

Предварительно скомпилированные заголовки в Visual C ++

В Visual C ++ обычно #include все ваши неизменяемые файлы заголовков в stdafx.h . Затем вы инструктируете компилятор создать предварительно скомпилированный заголовок stdafx.pch при компиляции stdafx.cpp , который ничего не делает, кроме включения stdafx.h . Если вы хотите использовать предварительно скомпилированный заголовок в другом файле .cpp , вам необходимо включить stdafx.h в качестве первого включаемого файла и указать компилятору использовать stdafx.pch для вашего предварительно скомпилированного заголовка.

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

Предварительно скомпилированные настройки заголовка для отдельных исходных файлов

Visual C ++ позволяет вам управлять настройками компилятора для всего проекта и для отдельных файлов. Чтобы получить доступ к отдельным свойствам, выберите исходный файл в проводнике решений, щелкните его правой кнопкой мыши и выберите Свойства в контекстном меню. Параметры для предварительно скомпилированных заголовков находятся в Свойства конфигурации => C / C ++ => Предварительно скомпилированные заголовки . Если вы изменяете эти настройки, вам часто нужно делать это для всех конфигураций (например, Debug и Release ).

Когда вы используете предварительно скомпилированные заголовки, у вас будет настройка для весь проект, который указывает компилятору использовать stdafx.pch для предварительно скомпилированного заголовка. stdafx.cpp будет иметь индивидуальные настройки, которые инструктируют компилятор генерировать stdafx.pch , и если у вас есть исходные файлы, которые не

55
ответ дан 27 November 2019 в 22:11
поделиться

Когда вы компилируете код, компилятор должен просмотреть все заголовки #included, чтобы знать, как скомпилировать код в вашем .cpp файле.

В больших проектах (или в проектах, использующих библиотеки как MFC), эти заголовки могут стать огромными, и поэтому на их компиляцию уйдет много времени.

Поскольку большинство этих заголовков меняются не так часто (если вообще когда-либо), вы можете заставить компилятор «предварительно компилировать» их - он обрабатывает их и сохраняет свое состояние в предварительно скомпилированном заголовке. В следующий раз, когда он компилируется, ему не нужно будет снова читать и компилировать все эти заголовки, поэтому он работает намного быстрее.

Одно из требований Visual Studio состоит в том, что если вы используете предварительно скомпилированный заголовок, он должен быть включен в каждый файл в проекте.

Если проект небольшой или вы не часто его собираете, то вы можете просто отключить «предварительно скомпилированный заголовок» вариант (в настройках проекта. Это относится ко всему проекту в целом ). Единственный эффект, который вы получите, - это то, что он может компилироваться медленнее. Или оставьте этот параметр включенным и просто добавьте #include "stdafx.h" в качестве первого включения в каждый файл.

4
ответ дан 27 November 2019 в 22:11
поделиться
  1. См. MSDN
  2. Обычно. вам необходимо включить stdafx.h в каждый файл cpp. Все дело в том, что они предварительно скомпилированы, и вам не нужно беспокоиться, что не все они используются в каком-то конкретном файле.
0
ответ дан 27 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

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