Tüm C ++ derleyicileri ile başa çıkmak için ciddi bir performans sorunu var. C ++ kodunu derlemek uzun ve yavaş bir işlemdir.
C ++ dosyalarının üstündeki derleme başlıkları çok uzun ve yavaş bir işlemdir. Windows API ve diğer büyük API kitaplıklarının bir parçasını oluşturan büyük başlık yapılarını derlemek çok , çok uzun ve yavaş bir işlemdir. Her Cpp kaynak dosyası için tekrar tekrar yapmak zorunda kalmak bir ölüm şövalyesi.
Bu, Windows'a özgü değildir, ancak Windows gibi büyük bir API'ye karşı derlemek zorunda olan tüm derleyicilerin karşılaştığı eski bir sorundur.
Microsoft derleyicisi, önceden derlenmiş üstbilgiler adı verilen basit bir hile ile bu sorunu giderebilir . Hile oldukça kaygan: Her CPP dosyası potansiyel ve yasal olarak her bir Cpp dosyasının üstündeki üstbilgi dosyaları zincirine biraz farklı bir anlam verebilir; başlıkları farklı sırayla ekleyerek), çoğu zaman böyle değildir. Çoğu zaman, düzinelerce veya yüzlerce dahil edilmiş dosyamız vardır, ancak bunların hepsi uygulamanızda derlenen tüm Cpp dosyaları için aynı anlama sahiptir.
Derleyici, her Cpp dosyasını ve her seferinde sıfırdan düzinelerce derlemeyi derlemeye başlamak zorunda kalmazsa büyük zaman tasarrufu sağlayabilir.
Püf noktası, derleme zincirlerinin başlangıç noktası olarak özel bir üstbilgi dosyası olarak tanımlanmaktan ibarettir. Bu, genellikle geçmiş nedenlerle stdafx.h adlı bir dosya olan 'önceden derlenmiş üstbilgi' dosyası olarak adlandırılır .
API'larınız için tüm büyük büyük başlıklarınızı uygun sırayla stdafx.h dosyanızda listeleyin ve ardından #include "stdafx.h"
anlamlı bir içerikten önce en üstte CPP dosyalarınızın her birini en üstte bir ile başlatın (daha önce izin verilen tek şey yorum).
Bu koşullar altında , derleyici sıfırdan başlamak yerine, her şeyi derlemek için önceden kaydedilmiş sonuçlardan derlemeye başlar stdafx.h
.
Bu hilenin Microsoft derleyicilerine özgü olduğuna inanmıyorum, ne de orijinal bir gelişme olduğunu düşünüyorum.
: Microsoft derleyicinde önderlenmiş başlıkların kontrolleri kullanımı derleyiciye bir komut satırı argümanı ile kontrol edilmesidir ayarı için /Yu "stdafx.h"
. Tahmin edebileceğiniz gibi, stdafx.h
dosya adının kullanımı sadece bir kuraldır; İsterseniz adı değiştirebilirsiniz.
Visual Studio 2010'da, bu ayar bir CPP Projesi'ne sağ tıklayıp 'Özellikler'i seçip "Yapılandırma Özellikleri \ C / C ++ \ Önceden Derlenmiş Üstbilgiler" e giderek GUI'den denetlenir. Visual Studio'nun diğer sürümleri için, GUI'deki konum farklı olacaktır.
Önceden derlenmiş başlıkları devre dışı bırakırsanız (veya projenizi desteklemeyen bir araçla çalıştırırsanız) programınızı yasadışı yapmaz; bu, aracınızın her şeyi sıfırdan derleyeceği anlamına gelir.
Hiçbir, Windows bağımlılıkları ile bir kütüphane oluşturuyorsanız, kolayca kaldır dışarı veya edebilirsiniz #include
lar dan stdafx.h
dosyası. Dosyayı kendi başınıza kaldırmanıza gerek yoktur, ancak yukarıdaki önceden derlenmiş başlık ayarını devre dışı bırakarak da bunu açıkça yapabilirsiniz.