【问题标题】:Is there a way to include a file into all project files in C++?有没有办法将文件包含到 C++ 中的所有项目文件中?
【发布时间】:2017-06-02 15:40:27
【问题描述】:

假设我们在一个项目中有相当多的文件,因此将#include "somefile" 写入所有文件将需要很长时间,那么有没有办法将"somefile" 包含到项目中的所有文件中?

【问题讨论】:

  • 如果您编写一个执行添加的脚本不会花费很长时间。我建议您考虑为什么要在所有项目文件中包含标头。所有这些文件真的依赖于标题吗?如果他们这样做了,那么他们为什么不包括它呢?如果他们不这样做,那么有什么理由包含它?
  • 在 GCC 中:-include.
  • 您为什么要强制所有文件包含迄今为止不需要的内容?你在玩一些“聪明”的预处理技巧吗?因为,如果你是,你不应该。如果不是,则不需要强制包含在语法上不需要它的文件中,只需将#include 添加到编译器要求它的所有文件中。

标签: c++ project


【解决方案1】:

一些编译器对此有一个选项。例如,GCC 的选项是-include

-include file

处理文件,就像“#include "file"”作为主要源文件的第一行出现一样。但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录。如果在此处未找到,则正常在“#include "..."”搜索链的其余部分中进行搜索。

如果给出了多个-include 选项,则文件将按照它们在命令行中出现的顺序包含在内。


当然,使用此类选项将使您的项目依赖于对此类编译器功能的支持。一种可移植的解决方案是简单地编辑您的所有文件。

【讨论】:

    【解决方案2】:

    如果您使用的是 IDE,肯定有一种“查找和替换”机制可供您使用!

    这里的想法是找到一个字符串(例如另一个#include),它存在于您想要放置#include 的相同位置,并将其替换为连接的新#include带有换行符和已经存在的字符串。这里的技巧是同时对所有文件执行此操作。

    一些常见 IDE 的示例:

    -Visual Studio - Visual Studio Code Replace multiple files at once

    -Eclipse - Is there a way to find/replace across an entire project in Eclipse?

    -记事本++ - How To “Find And Replace” Words In Multiple Files

    【讨论】:

      【解决方案3】:

      如果是 Visual Studio,请使用 /FI 选项(强制包含)。

      https://msdn.microsoft.com/en-us/library/8c5ztk84.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-02
        • 2012-11-18
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 2022-10-07
        相关资源
        最近更新 更多