【问题标题】:C++ Header Guard Syntax and Header PlacementC++ 标头保护语法和标头放置
【发布时间】:2020-04-30 16:17:23
【问题描述】:

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

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

任何帮助将不胜感激!

【问题讨论】:

  • 不要在除标题之外的任何地方放置标题保护。老实说,缺少预编译的标头集,标头的标头也不是很有帮助。作为一名工程师,您希望查看源文件中的标题列表,并了解正在拉入的内容;看不到您需要单独打开的东西的列表,检查它们拉入了什么。相信我,这将是一个真正的 PITA 三到四层深度。

标签: c++ header include-guards


【解决方案1】:

您不应在源代码 (.cpp) 文件中编写标头保护。

我们也应该避免使用双标头保护The use of double include guards in C++

header guard 是为了避免在代码编译过程中多次包含头文件。

此外,在添加#include 文件时,请记住我们不应在其中添加不需要的文件。 例如 考虑如果源文件需要#include &lt;iostream&gt; 但您包含在头文件中,那么应该避免这种情况。这种情况#include &lt;iostream&gt; 仅在源文件中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-17
    • 2011-06-13
    • 1970-01-01
    • 2013-11-13
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多