2015-06-09 30 views
0

我正在嘗試使用#ifndef,如下所示。#ifndef指令的用法

#ifndef MACRO1 || #ifndef MACRO2 
.... 
#endif 

我已經嘗試過:

#ifndef (MACRO1 || MACRO2) 
.. 
#endif 

但對於這兩種情況下我得到以下錯誤

error: extra tokens at end of #ifndef directive

回答

1

#ifdef#ifndef是特殊的縮寫#if defined(...)#if !defined(...) 。但是,它們只能用於單個宏,並且不允許進行邏輯操作。因此,如果檢查多個宏,請使用#if而不是defined()運算符。作爲一個常規操作員,這可以與邏輯操作相結合,因爲!defined()已經做到了。

3

使用#if預處理指令代替:

#if !defined(MACRO1) || !defined(MACRO2) 
0

您可以使用邏輯操作在預處理指令ORS,但爲了檢查所定義的東西,使用defined指令:

#if !defined MACRO1 || !defined MACRO2 
.... 
#endif 
1

您可以使用下面的代碼

#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.