在Visual Studio12.0附带的stl实现中,numeric头如下所示
#pragma once
#ifndef _NUMERIC_
#define _NUMERIC_
// shortened for the sake of readibility
.
.
.
#endif /* _NUMERIC_ */我知道#pragma once不是standard conform。
然而,为什么他们要实现双头后卫呢?
发布于 2020-06-01 16:09:25
#pragma once:同一文件不会多次包含include guard idiom:使用预处理器宏定义来防止文件内容的多次包含。
根据Doc的说法
在同一个文件中同时使用
include guard惯用法和#pragma once没有什么好处。如果在标准格式的习惯用法之前或之后没有出现非注释代码或预处理器指令,则编译器会识别包含保护习惯用法,并以与#pragma once指令相同的方式实现多包含优化
我建议你可以参考这个链接:https://stackoverflow.com/a/13339535/11872808
https://stackoverflow.com/questions/62084298
复制相似问题