簡體   English   中英

在C ++中遇到#ifndef問題

[英]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.cppGPS.cpp

或通過如下命令行定義OS_TESTINGg++ testing.cpp GPS.cpp -DOS_TESTING

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM