【发布时间】:2015-02-01 14:46:38
【问题描述】:
我正在使用 WiringPi 为 Raspberry pi 创建一个软件。问题是如果 WiringPi 没有检测到 Raspberry Pi,它将失败。因此,如果我想在不使用实际 Raspberry pi 的情况下进行一些单元测试,我必须检查一个常量并且如果我在测试中不要执行一些函数调用。
我有一个测试 cpp 文件,其中有我的 main() 函数,并且在文件的顶部有 #define OS_TESTING。我将类拆分为头文件和 cpp 文件,因此在该文件中包含所需的头文件。
问题是我有一个名为 GPS.cpp 的 cpp 文件,这里我有 GPS.h 的代码。在 GPS.cpp 我做了一个#ifndef OS_TESTING,但它没有检测到它已经在 testing.cpp 中定义了。
我的编译命令如下:
g++ testing.cpp GPS.cpp
是否有可能因为我在 GPS.cpp 中未包含的文件中有#define 而没有定义它?如果是这种情况,我该怎么做才能解决它?
【问题讨论】:
-
在编译器的命令行中定义
OS_TESTING,如g++ -DOS_TESTING ...这将适用于所有正在编译的源文件,就像在每个文件中定义的第一件事一样。