Я создаю программное обеспечение для Raspberry Pi, используя WiringPi. Проблема в том, что WiringPi потерпит неудачу, если не обнаружит Raspberry Pi. Поэтому, если я хочу выполнить какое-то модульное тестирование без использования реального Raspberry pi, я должен проверить константу и не выполнять некоторые вызовы функций, если я нахожусь в тестировании.
У меня есть тестовый файл cpp, где у меня есть функция main (), а в верхней части файла — #define OS_TESTING. У меня есть классы, разделенные на файлы header и cpp, поэтому в этот файл я включаю необходимые файлы заголовков.
Дело в том, что у меня есть файл cpp с именем GPS.cpp и здесь у меня есть код для GPS.h. В GPS.cpp я делаю #ifndef OS_TESTING, но он не обнаруживает, что он уже был определен в testing.cpp.
Моя команда компиляции выглядит следующим образом:
g ++ testing.cpp GPS.cpp
Возможно ли, что он не будет определен, потому что у меня есть #define в файле, не включенном в GPS.cpp? если это так, что я могу сделать, чтобы это исправить?
Возможно ли, что он не будет определен, потому что у меня есть #define в файле, не включенном в GPS.cpp?
Да, определяет в исходном коде только область видимости файла.
если это так, что я могу сделать, чтобы это исправить?
Используйте общий заголовок, что-то вроде этого:
#if !defined(MY_HEADER_H)
#define MY_HEADER_H
#define OS_TESTING
#endif
А затем включить заголовок в обоих testing.cpp
а также GPS.cpp
,
Или определить OS_TESTING
через командную строку вот так: g++ testing.cpp GPS.cpp -DOS_TESTING
,