У меня проблемы с написанием этого макроса. Я использую ceedling.
У меня есть файл "globals.h" со следующим кодом:
#ifndef globals
#ifndef UNITY
#define STATIC static
#else
#define STATIC
#endif
#define globals 1
#endif
Итак, здесь должно произойти то, что любой метод, использующий STATI C будет stati c, если код не тестируется с единством, иначе это будет не stati c.
Мой тестовый файл включает «unity.h», а затем включает «глобальные объекты» .h ", а затем включает" protocol.h ".
Тестируемый файл," protocol. c ", включает" globals.h ", а затем" protocol.h ".
Тестовый файл «test_protocol. c» включает «unity.h», затем «globals.h», затем «protocol.h».
Насколько я понимаю, сначала следует определить UNITY , тогда он будет от go до globals.h
и определит STATI C как ничто, поскольку UNITY уже определено в UNITY.h
Однако поведение, которое я наблюдаю, таково, что независимо от того, что я да, я не могу заставить globals.h
ввести эту #else
директиву, и поэтому кажется невозможным определить STATIC
как что-либо кроме static
.
* 102 2 * Однако я знаю, что то, что я пытаюсь достичь sh, возможно, потому что многие люди рекомендуют эту стратегию и реализовали ее. Итак, что я делаю, что заставляет
globals.h
думать, что UNITY не определено, когда это так?