Visual Studio stl 数字实现中的双标头保护
Posted
技术标签:
【中文标题】Visual Studio stl 数字实现中的双标头保护【英文标题】:Double header guards in Visual Studio stl numeric implementation 【发布时间】:2020-05-29 10:54:50 【问题描述】:在 Visual Studio 12.0 附带的 stl
实现中,numeric
标头如下所示
#pragma once
#ifndef _NUMERIC_
#define _NUMERIC_
// shortened for the sake of readibility
.
.
.
#endif /* _NUMERIC_ */
我知道#pragma once
不是standard conform。
尽管如此,他们为什么要实施双标头保护?
【问题讨论】:
【参考方案1】:#pragma once
: 同一个文件不会被多次包含
include guard idiom
:使用预处理器宏定义来防止文件内容的多次包含。
根据Doc
同时使用
include guard
和#pragma once
在同一个文件中。编译器识别包含保护习语,并以相同的方式实现多重包含优化 如果没有非注释代码或#pragma once
指令的方式 预处理器指令出现在标准形式之前或之后 成语
我建议你可以参考链接:https://***.com/a/13339535/11872808
【讨论】:
以上是关于Visual Studio stl 数字实现中的双标头保护的主要内容,如果未能解决你的问题,请参考以下文章
哪些编译器选项用于在 Visual Studio 中编译 C++ STL 类/函数?
在 Visual Studio 中编写 MFC/STL 程序需要做啥?
在 Visual Studio 调试模式下“浅”显示 STL 容器?