我正在嘗試使用#ifndef,如下所示。#ifndef指令的用法
#ifndef MACRO1 || #ifndef MACRO2
....
#endif
我已經嘗試過:
#ifndef (MACRO1 || MACRO2)
..
#endif
但對於這兩種情況下我得到以下錯誤
error: extra tokens at end of #ifndef directive
我正在嘗試使用#ifndef,如下所示。#ifndef指令的用法
#ifndef MACRO1 || #ifndef MACRO2
....
#endif
我已經嘗試過:
#ifndef (MACRO1 || MACRO2)
..
#endif
但對於這兩種情況下我得到以下錯誤
error: extra tokens at end of #ifndef directive
#ifdef
和#ifndef
是特殊的縮寫#if defined(...)
和#if !defined(...)
。但是,它們只能用於單個宏,並且不允許進行邏輯操作。因此,如果檢查多個宏,請使用#if
而不是defined()
運算符。作爲一個常規操作員,這可以與邏輯操作相結合,因爲!defined()
已經做到了。
使用#if
預處理指令代替:
#if !defined(MACRO1) || !defined(MACRO2)
您可以使用邏輯操作在預處理指令ORS,但爲了檢查所定義的東西,使用defined
指令:
#if !defined MACRO1 || !defined MACRO2
....
#endif
您可以使用下面的代碼
#if !defined(MACRO1) || !defined(MACRO2)
#endif
You can use the defined operator in the #if directive to use expressions that evaluate to 0 or 1 within a preprocessor line.