【问题标题】:Include Problems and Include Guards包括问题和包括警卫
【发布时间】:2014-04-14 19:58:53
【问题描述】:

我和我的团队正在开展一个相当大的项目,其中包含许多具有各自头文件和源文件的类。我们正在尝试将 C++ 库和项目类头文件中的所有包含合并到一个名为“Includes.h”的文件中,该文件包含在每个头文件中。这样做时我遇到的一个问题是类头文件基本上包括它们自己。我在每个头文件的顶部都包含了#pragma once。当我注释掉“#Includes.h”文件中的#include "Controller.h" 时,“Controller.h”的错误就会消失。

【问题讨论】:

  • 在网上搜索“c++ include guards”。 #pragma once 不能跨编译器移植。

标签: c++ include project include-guards


【解决方案1】:

拜托拜托,漂亮请不要这样做。

更喜欢前向声明。然后是单独的包含文件。

否则你改变一个包含文件,它必须编译很多。 IE。浪费时间。

基本上让每个头文件都能用空白的cpp文件编译。最小依赖。

【讨论】:

  • 在每个头文件中直接包含其他头文件更好吗?有没有办法将它们全部包含在内,只从 Includes.h 中排除执行包含的文件?几乎所有标题都包含其余标题。
  • @user3516792 - 头文件应该只使用前向声明。为什么不使用它们时都包括它们?
  • @user3516792:请不要使用庞大的包含文件。它搞砸了构建系统的文件依赖关系。如果更改了一个头文件,则必须构建所有文件,包括那些不使用更改后的头文件的文件。因此,构建系统将编译所有 200 个文件,而不是从 200 个文件中编译一个。
  • 好的,谢谢大家!我最终返回并在每个标题中添加了特定的包含,现在它运行良好。不会再试了!感谢您的所有帮助!
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
相关资源
最近更新 更多