2013-05-07 39 views
2

我不熟悉這種類型的定義,需要幫助第5行做些什麼?它是否重新定義了AND_CPU_0?這種類型的定義對一個&&有什麼作用

#ifdef CONDITION_1 
#define AND_CPU_0 
#define AND_CPU_1 
#ifdef CONDITION_2 
#define AND_CPU_0 && [ $(get_id cpu) -ne 0] 
#endif 
#ifdef CONDITION_3 
#define AND_CPU_1 && [ $(get_id cpu) -ne 1] 
#endif 

#endif 

謝謝!

+0

更換應這個問題被標記'C',如果它只能引用C預處理器?有一個標籤'c-preprocessor',但我不知道它是否真的相關...... – zakinster 2013-05-07 12:58:09

回答

2

#define AND_CPU_0 && [ $(get_id cpu) -ne 0]只是將AND_CPU_0定義爲&& [ $(get_id cpu) -ne 0]

例如,在源代碼中可以有

if (enable == true AND_CPU_0) { 

} 

這相當於

if (enable == true && [ $(get_id cpu) -ne 0]) { 

} 
+0

請注意'enable == true'可能不是平均布爾測試的最好例子:)。 – zakinster 2013-05-07 12:43:54

+0

是的。剛剛添加了「==真」的可視性。 – 2013-05-07 12:46:16

+0

好的。所以基本上'&& [$(get_id cpu)-ne 0]'是一回事,如果是#define AND_CPU_0的話。 – user1836141 2013-05-07 12:55:34

1

C預處理器簡單地替換宏調用與宏的主體。

在這種情況下,如果你有一個shell腳本有這樣的語句:

if [ something AND_CPU_0 ]; then ... fi 

它只會用

if [ something && [ $(get_id cpu) -ne 0] ]; then ... fi 
+0

'''如何處理if? – 2013-05-07 12:43:49

+0

@Koushik這顯然不是'C'的例子 – zakinster 2013-05-07 12:44:42

+3

@Koushik OPs post中的預處理器宏看起來像POSIX(例如Unix,Linux,OSX)shell代碼,所以我使用shell if語句展示了一個例子。請記住,C預處理器可以作爲獨立程序運行(在許多系統中稱爲「cpp」)來預處理任何文本文件。 – 2013-05-07 12:48:09