我在编写这个宏时遇到了麻烦。我正在使用ceedling。
我有一个文件“globals.h”,其中包含以下代码:
#ifndef globals
#ifndef UNITY
#define STATIC static
#else
#define STATIC
#endif
#define globals 1
#endif
所以,这里应该发生的是,如果代码没有被统一测试,任何使用 STATIC 的方法都将是静态的,否则它将不是静态的。
我的测试文件包含“unity.h”,然后包含“globals.h”,然后包含“protocol.h”。
正在测试的文件“protocol.c”包括“globals.h”和“protocol.h”。
测试文件“test_protocol.c”包括“unity.h”,然后是“globals.h”,然后是“protocol.h”。
根据我的理解,应该首先定义 UNITY,然后它会去globals.h
,并将 STATIC 定义为空,因为 UNITY 已经在 UNITY.h 中定义了
但是,我看到的行为是,无论我做什么,我都无法globals.h
输入该#else
指令,因此似乎不可能STATIC
被定义为static
.
但是,我知道我想要完成的事情是可能的,因为很多人推荐并实施了这个策略。那么,我在做什么导致globals.h
认为 UNITY 未定义,何时定义?