有条件地包含C++标准库



我有 2 个使用 std::string 的对象来工作。对象 A 可以独立于对象 B 使用。但是,可能会出现一种情况,即对象 A 和 B 可能在同一主文件中使用.cpp这可能会导致标头冲突,并且标头可能会被编译两次。如何防止被编译两次? 我试过使用:

#ifndef string_H
#define string_H
#endif

它不起作用,对象 B 无法使用字符串库,我认为这仅适用于第三方库,例如我自己的库,而不是官方库。所以我的问题是,您将如何在标准库中的标头上放置包含保护?

编辑:我正在使用Visual Studio 2017,所以我相信这一切都是由Microsoft编写的。感谢您的回答,我不知道 std:: 已经包括已经内置的警卫。

您将如何在标准库中的标头上放置包含保护

你不会。标准库标头已经内置了防护装置。
编辑:
C++标准要求标准库标头不能双重包含,但它没有指定实现应该如何这样做。但是,任何符合标准的实现都允许您多次包含标准库标头,而不会引起任何问题。
(来源(

最新更新