Подтвердить что ты не робот

Что такое файл stdafx.cpp, который создается автоматически в новом проекте С++ в visual studio 2012

Из того, что я понимаю, stdafx.h является предварительно скомпилированным файлом заголовка и используется для ускорения процесса компиляции в visual studio. Когда я создаю проект С++ в visual studio 2012, также есть stdafx.cpp. Может ли кто-нибудь объяснить отношения между stdafx.h и stdafx.cpp?

4b9b3361

Ответ 1

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

Но прежде чем это сработает, должен быть один файл .cpp, который #include stdafx.h и сначала компилируется. Перед всеми другими .cpp файлами в вашем проекте. Как только это будет сделано, компилятор может использовать созданный файл .pch и быстро скомпилировать все остальные файлы .cpp, больше не нужно фактически #include заголовки.

Stdafx.cpp - это тот самый файл .cpp. У него есть настройка, которая отличается от всех других файлов .cpp, он создается с помощью /Yc. Параметр "Создать файл скомпилированного заголовка".


ОБНОВЛЕНИЕ: после 28 лет Microsoft нарушила их практику "когда-то была стандартная среда, но никто никогда не видел" на VS2019. Теперь имя "pch" вместо "stdafx", конечно, для более очевидной аббревиатуры. Просто смена имени, механика все та же.