传统上,避免 C + + 中多头包含的标准和可移植的方法是/是使用也称为 宏观保障计划的 #ifndef - #define - #endif
预编译器指令方案(参见下面的代码片段)。
#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
然而,在大多数实现/编译器中(见下图) ,有一个更“优雅”的替代方案,它与名为 #pragma once
的宏保护方案具有相同的功能。与宏保护方案相比,#pragma once
有几个优点,包括代码更少、避免名称冲突,有时还提高了编译速度。
通过一些研究,我意识到尽管几乎所有已知的编译器都支持 #pragma once
指令,但是关于 #pragma once
指令是否是 C + + 11标准的一部分仍然存在一些混乱。
#pragma once
指令是否是 C + + 11标准的一部分吗?#pragma once
)的优缺点,那也是很好的。