Jag har läst hjälpen för precompiled headers (c++) flera gånger men förstår ändå inte riktigt. Kan någon förklara hur det fungerar?Precompiled headers
Jag har förstått så mycket som att filer som jag placerar i "stdafx.h" kommer att prekompileras men vad händer med de filer jag placerar i cpp filerna?
Antag följande exempel:
Fil1.cpp
#include "stdafx.h"
#include <vector>
#include <list>
Fil2.cpp
#include <vector>
#include "stdafx.h"
#include <list>
Mitt antagande är att det fungerar så här:
När jag kompilerar fil1.cpp så kommer alla filer som finns stdafx.h att förkompileras och sparas i xxx.pch. vector & list kommer inte att sparas i xxx.pch filen.
När jag kompilerar fil2.cpp så upptäcker kompilatorn att vector inte finns i xxx.pch och därför genererar om xxx.pch med allt som finns i stdafx.h + vector.
Vad händer nu om jag kompilerar fil1.cpp igen? Kommer kompilatorn då att generera en ny xxx.pch utan vector eller tar den den befintliga xxx.pch men använder inte de delar som hör till vector? Jag antar att det är det senare men är inte säker.
Om det är så som jag tror så kommer xxx.pch efter en full kompilering av ett projekt att innehålla alla includefiler som står före "stdafx.h" i alla projektets filer. Är det då någon skillnad mot att stoppa alla includefilerna i stdafx.h istället?