c++ - 是否有一种自动合并 C++ 实现(.cpp)和头文件(.h)文件的方法

标签 c++ unit-testing automated-tests c-preprocessor

我正在尝试使用 CPPUnit 为大型代码库创建单元测试框架。我需要能够测试各个模块,所有这些模块都是以特定根模块开头的模块树的一部分。

由于非技术原因,我无法触及生产文件(我最初的方法是向根模块添加一个 ifdef)。所以我想到了另一种方法,即创建根模块 header 的拷贝以及属于中间继承层次结构中模块的 header 的拷贝。由于涉及的模块数量以及每个模块源的大小。我正在寻找一种自动为我进行合并的方法。

所以对于 foo.h 和 foo.cpp,我正在寻找一种可以输出 fooTest.h 的工具,其中 fooTest.h 包含其中所有内容的声明和定义foo.cpp/foo.h

编辑: 感谢您的回答,我忘记提及的一件事是, fooTest.h 的内容不应该是 foo.cpp 和 foo.h 的合并结果。我需要对根 fooTest.h 进行微小的更改,以使其成为适合测试的模拟模块。因此,简单地使用 include 是行不通的。我将研究串联文件,看看是否能解决我的问题。

最佳答案

gcc -E

只运行预处理器:

  -E  Stop after the preprocessing stage; do not run the compiler proper.
      The output is in the form of preprocessed source code, which is
      sent to the standard output.

这将具有内联所有#include 指令的效果。但是,它也会获取标准库 - 但多次包含这些应该不会有害。

关于c++ - 是否有一种自动合并 C++ 实现(.cpp)和头文件(.h)文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284086/

相关文章:

c++ - 为什么 constexpr 方法可以正确返回其值在执行过程中发生变化的类成员?

C++为什么vector初始化会调用copy constructor

unit-testing - 如何配置vs2012只保留最新的测试结果?

android - Gradle android插件和android测试?

c# - 我可以使用 Selenium WebDriverWait 等待相对于已知 Web 元素的 xpath 吗?

continuous-integration - Gitlab管道测试阶段失败并仍然创建工件

c++:如何从另一个类的函数访问一个类的私有(private)变量

c++ - Visual Studio 2015 调试 : How to stay within my own program only

java - 如何使用 "Spring Data JPA"规范进行单元测试方法

xpath - 使用机器人框架查找属性为 'selected' 的选项标签