c++包含保护

C++ include guard

本文关键字:保护 包含 c++      更新时间:2023-10-16

所以我知道如何使用标准

在我自己的头文件中放置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,它也有包含保护。所以,不要担心多个包含