Visual Studio stl数字实现中的双头保护

问题描述 投票:0回答:1

在Visual Studio 12.0附带的stl实现中,numeric标头看起来像这样

#pragma once
#ifndef _NUMERIC_
#define _NUMERIC_

// shortened for the sake of readibility
. 
.
.


#endif /* _NUMERIC_ */

我知道#pragma once不是standard conform

但是,为什么要实现双头保护?

c++ visual-studio stl headerguard
1个回答
0
投票

#pragma once:不会多次包含同一文件include guard idiom:使用预处理程序宏定义来防止文件内容的多次包含。

根据Doc

include guard惯用语和#pragma once在同一文件中。编译器识别出包含保护习惯用法,并以相同方式实施多包含优化如果没有非注释代码,则为#pragma once指令预处理指令位于标准格式的之前或之后成语

我建议您可以参考链接:https://stackoverflow.com/a/13339535/11872808

© www.soinside.com 2019 - 2024. All rights reserved.