c++包含保护
C++ include guard
所以我知道如何使用标准
在我自己的头文件中放置include保护#ifndef ...
#define ...
现在,我的问题是关于包括不是我自己的库。这是一个很好的例子。我有一个头文件需要使用string,所以我执行以下操作
foo。
#ifndef FOO_H
#define FOO_H
#include <string>
... code etc ...
#endif
现在,如果我有另一个头文件名为..比如说,bar.h
,它也需要使用<string>
,我怎么能防止多个夹杂?STL已经有包括警卫到位吗?
STL库也有include守卫,任何好的库都应该这样做。
#ifndef _GLIBCXX_STRING
#define _GLIBCXX_STRING 1
这是来自gcc的
假设您所说的"STL"是指c++标准库,那么您可以引用c++标准。§17.6.2.2/2
州:
翻译单元可以以任意顺序包含库头文件。每个都可以被包含不止一次,除了每次包含
<cassert>
或<assert.h>
的效果取决于NDEBUG的当前词法定义之外,没有什么不同。
这意味着不需要防止同一个头文件包含多个内容。
包含保护使用来保护保护对中的内容。您可以检查系统头文件string
,它也有包含保护。所以,不要担心多个包含
相关文章:
- 为什么您需要C++头文件的包含保护
- C2011: 'Card':"类"类型重新定义(尽管使用了包含保护并且没有在文件中重新定义.cpp类)
- 更智能地在C++中包含保护,以便在不同的命名空间中多次包含标头
- 使用 #pragma 一次,#ifndef 在同一文件中包含保护
- 保护某些包含位置
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 确保每个标头在大型项目中使用唯一的包含保护
- 在atom中生成c++包含头保护
- 为什么在2.CPP文件中包含此头文件(带头保护)会导致命名冲突
- C++包含保护和多个定义错误
- 带有正确包含保护的C++重复符号链接器错误
- 函数的多个定义,即使在包含保护中定义
- 无法使用标头保护解决包含其自身的文件(包括标头)的错误
- 是否可以在没有包含保护的情况下编写头文件,并且没有多个定义错误
- 包含保护:为什么C++编译器不自动只包含每个头文件一次?
- #在include保护结束之前将.cpp包含在.h文件中
- C++包含函数原型的保护程序
- 关于包含带有保护的头文件
- 在主方法的c++中包含保护
- c++包含保护