2011-05-27 54 views
2

這是一個簡單的問題,但我沒有在類似的代碼中找到答案。基本上,我允許在#ifdef或#ifndef語句中有兩個以上的#define嗎?對於一個簡單的例子:#ifdef或#ifndef中的#define#

#ifdef __GNUC__ 
     #define HELLO(x) x 
     #define WORLD(y) y 
    #else 
     #define __attribute__(x) 
     #define expect(expression, value) (expression) 
    #endif 

謝謝

回答

5

你當然是。這是完全有效的。

您可以根據需要在預處理器塊中包含儘可能多的C語句或預處理器指令。

5

是的,你可以根據你想擁有儘可能多的預處理指令或#ifdef/#ifndef之間只是普通的C++語句... [#else] ... #endif塊。

這是一個足夠簡單的問題,你可能應該在嘗試之前嘗試過。

+5

儘管在C中有足夠的_unnspecified behavior_,_undefined behavior_和_implementation定義的行爲,「只是嘗試它」有時是錯誤的建議方法。 :) – sarnold 2011-05-27 23:17:05

+1

對於C本身,這是真的 - 但對於預處理器? – ThiefMaster 2011-05-27 23:44:57

+0

@ThiefMaster:C++中的變量宏? – 2011-05-28 10:39:16

相關問題