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 oncemakro 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 oncedirektifin neredeyse tüm bilinen derleyiciler tarafından desteklenmesine rağmen, direktifin #pragma onceC ++ 11 standardının bir parçası olup olmadığı konusunda bir bulanıklık olduğunu fark ettim .
Sorular:
- Birisi
#pragma oncedirektifin 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 oncegenellikle çalışmıyor.