Geleneksel olarak, C ++ 'da birden fazla başlık eklemesini önlemenin standart ve taşınabilir yolu, makro koruma şeması olarak#ifndef - #define - #endif
da adlandırılan derleyici öncesi yönergeler şemasını kullanmaktır (aşağıdaki kod snippet'ine bakın).
#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
Bununla birlikte, çoğu uygulamada / derleyicide (aşağıdaki resme bakın), makro koruma şeması ile aynı amaca hizmet eden daha "zarif" bir alternatif vardır #pragma once
. #pragma once
makro koruma şemasına kıyasla daha az kod, isim çakışmalarından kaçınma ve bazen daha yüksek derleme hızı gibi çeşitli avantajlara sahiptir.
Biraz araştırma yaparak, #pragma once
direktifin neredeyse tüm bilinen derleyiciler tarafından desteklenmesine rağmen, direktifin #pragma once
C ++ 11 standardının bir parçası olup olmadığı konusunda bir bulanıklık olduğunu fark ettim .
Sorular:
- Birisi
#pragma once
direktifin C ++ 11 standardının bir parçası olup olmadığını açıklığa kavuşturabilir mi ? - C ++ 11 standardının bir parçası değilse, daha sonraki sürümlere dahil etme konusunda herhangi bir plan var mı (örn., C ++ 14 veya üstü)?
- Birinin tekniklerden birini kullanmanın avantajları / dezavantajları hakkında daha fazla ayrıntıya girmesi de iyi olurdu
#pragma once
.
#pragma once
genellikle çalışmıyor.