Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使文件包含所有包含项?_C++_Header_Include - Fatal编程技术网

C++ 如何使文件包含所有包含项?

C++ 如何使文件包含所有包含项?,c++,header,include,C++,Header,Include,我有一个老问题。 我正在开发C++中的基础结构代码,它有很多标题要包含在每个头文件中。 理想情况下,我希望将所有内容都包含在头文件中,然后只包含该头文件。这当然会产生无限循环问题,其中一个头包含在包含相同头的头中 做一次“ifndef”或“pragma”也无济于事。 有没有其他聪明的方法来实现这一点 谢谢 这当然会产生无限循环问题,其中一个头包含在包含相同头的头中 只需从“超级标题”包含的标题集中排除“超级标题”。这样你就不会有问题了 这就是说,这样做可能会导致翻译单元(包括“superhead

我有一个老问题。 我正在开发C++中的基础结构代码,它有很多标题要包含在每个头文件中。 理想情况下,我希望将所有内容都包含在头文件中,然后只包含该头文件。这当然会产生无限循环问题,其中一个头包含在包含相同头的头中

做一次“ifndef”或“pragma”也无济于事。 有没有其他聪明的方法来实现这一点

谢谢

这当然会产生无限循环问题,其中一个头包含在包含相同头的头中

只需从“超级标题”包含的标题集中排除“超级标题”。这样你就不会有问题了


这就是说,这样做可能会导致翻译单元(包括“superheader”)包含不必要的标题,这可能会对编译时间产生不利影响。因此,我不推荐这种方法。

“这当然会造成无限循环问题,其中一个标头包含在包含相同标头的标头中。”不应该这样做吗?“一次使用#ifndef或#pragma也不会有帮助。”为什么不呢?这是一件很常见的事情:任何具有预编译头的人都在这样做!几十年来,我一直使用预编译的头文件来完成这项工作。尽管如此,仍然有一些东西没有放在预编译头中。它是用来放入不改变或不经常改变的标题的,因为根据您的项目,重新编译预编译标题可能需要几分钟的时间。假设“superheader.h”有“A.h”和“B.h”。在“A.h”中,我包括“superheader.h”,在“B.h”中也是如此。如果我用#paragma保护过一次“superheader.h”,它看起来像是包含在“A.h”或“B.h”中(假设先编译“A.h”)。“B.h”内部结构一直在唠叨,它不知道“A.h”内部函数/变量/等是什么。除了在每个文件中包含必要的内容外,你知道一个好方法吗?