[英]Having trouble with #ifndef in C++
我正在使用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而未定義它? 如果是這種情況,我該如何解決?
是否有可能因為我在GPS.cpp中未包含的文件中包含#define而未定義它?
是的,在源代碼中定義僅具有文件范圍。
如果是這種情況,我該如何解決?
使用共享標頭,如下所示:
#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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.