Traditionnellement, le standard et portable de façon à éviter la pluralité de l'en-tête des inclusions en C++ a été/est d'utiliser l' #ifndef - #define - #endif
pré-directives du compilateur scheme également appelé macro-garde schéma (voir l'extrait de code ci-dessous).
#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
Dans la plupart des implémentations/compilateurs (voir photo ci-dessous) cependant, il y a de plus "élégant" alternative qui sert le même but que la macro-garde appelées #pragma once
. #pragma once
a plusieurs avantages par rapport à la macro-garde de régime, y compris les moins de code, d'éviter les collisions de noms, et parfois, l'amélioration de la compilation de la vitesse.
En faisant quelques recherches, j'ai réalisé que, bien #pragma once
directive est prise en charge par presque tous connu des compilateurs, il y a un turbidness qu' #pragma once
directive fait partie du C++11 standard ou pas.
Questions:
- Quelqu'un pourrait-il préciser si l'
#pragma once
directive fait partie du C++11 standard ou pas? - Si elle ne fait pas partie du standard C++11, il y a des plans sur y compris sur les versions ultérieures (par exemple, C++14 ou plus tard)?
- Il serait bien aussi si quelqu'un pouvait élaborer davantage sur les avantages/inconvénients en utilisant l'une des techniques (c'est à dire, la macro-garde contre
#pragma once
).