【问题标题】:C++ global includesC++ 全局包括
【发布时间】:2014-04-11 21:41:51
【问题描述】:

有什么方法可以通过一个 .h 文件包含所有需要的东西吗? (当我尝试时,我得到了很多错误......)

有一个小例子说明我的意思:

  • 包括:
    • main.cpp -> main.h(类和变量)->includes.h
    • test.cpp -> test.h(类和变量)->includes.h
    • 包括.h
      • iostream
      • windows.h
      • somelib.h
      • ...

【问题讨论】:

  • 嗯?不明白。
  • Visual Studio 有类似“预编译头”的东西,所有必要的包含都包含在 stdafx.h 中。这些头文件只被解析和编译一次。
  • 这两个只是例子,我的意思是它适用于一些directx库或其他任何东西......
  • 提醒:如果所有内容都在一个包含中,那么无论何时您对包含文件进行更改,所有内容都会重新构建。为了加快构建过程,只包含解析符号所需的文件。在一个体面的构建过程中,编译器只编译源文件或包含文件已更改的文件;其他的只是链接,这加快了进程。
  • 你的例子是可能的,但我不明白是什么问题。

标签: c++ header-files


【解决方案1】:

非常有用,避免循环include

假设你有 x.h : 在x.h你应该定义的头:

#ifndef X_H
#def X_H

///CODE of x.h

#endif X_H

然后你应该创建一个includes.h 并根据依赖关系,将你的头文件包含在includes.h

最后: 每个你想包含你只做的文件的地方:

#include "includes.h"

【讨论】:

    【解决方案2】:

    我找到了问题所在。如果您使用的是全局包含文件,则它不能包含定义类和变量的子包含的包含。 就像如果你想在测试中主要使用一些东西,你不能把 test.h 包含到 includes.h ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2011-02-05
      • 2011-08-09
      相关资源
      最近更新 更多