C++ Header 保护语法和 Header 放置

C++ Header Guard Syntax and Header Placement

我的问题是关于 header 守卫的正确语法和用法。例如,如果我在我的 C++ 代码中包含一些公共库,我可以制作一个 header 守卫,如下所示吗?此外,根据我在 header 文件中找到的文档,建议将 header 守卫放在 header 文件中。我正在使用 Microsoft Visual Studio。我可以将我的 header 守卫和 #include 文件放在我的主源文件中吗?或者这是一种不好的做法?我知道您可以使用#pragma 作为 header 守卫。但是,这不是受支持的标准,因此我尽量避免使用它。

#ifndef HEADER_GUARD
#define HEADER_GUARD
#include <iostream> 
#include <fstream>  
#include <string>
#include <iomanip>
#endif

如有任何帮助,我们将不胜感激!

你不应该在源代码 (.cpp) 文件中编写 header 守卫。

我们也应该避免双重 header 守卫 The use of double include guards in C++

Header 守卫是为了避免在代码编译期间多次包含 header 文件。

此外,在添加#include 文件时,请记住我们不应在其中添加不需要的文件。 例如 考虑一下如果源文件需要 #include <iostream> 但你包含在 header 文件中的情况,那么应该避免这种情况。这种情况 #include <iostream> 仅在源文件中。

#pragma once 被许多编译器支持,但它不是语言标准,它不能保证何时从远程位置和不同磁盘引用文件。