2012-02-19 65 views
1

任何人都可以給我解釋的前綴是什麼目的,當我們都在做這樣的#號作爲目標C

#if 

// block of codes goes here 

#endif 

回答

1

它們是preprocessor directives。預處理器指令是包含在我們程序代碼中的行,它們不是程序語句,而是預處理程序的指令。這些行總是以散列符號(#)開頭。預處理器在實際編譯代碼開始之前執行,因此預處理器在任何代碼由語句生成之前將所有這些指令摘要。

這些預處理指令只在單行代碼中擴展。只要找到換行符,預處理器指令就會結束。在預處理器指令結束時,預計不會有分號(;)。預處理器指令可以通過多行來擴展的唯一方法是在行尾使用反斜槓()作爲換行符。
對於更詳細地參閱Preprocessor directivesUsing Objective-C Preprocessor Directives

0

正如其他人提及的,與#前綴的標籤是指令作用於導致在那張要編譯的代碼的變形例的預處理器。更具體地說,您呈現的示例與條件編譯有關。一個常見的用途的情況下所涉及的是DEBUG編譯與RELEASE模式,其中選擇的代碼將被包括或由預處理器排除如下:

#define DEBUG 
#ifdef DEBUG 

// block of codes goes here - only survives preprocessing if in DEBUG mode 

#endif 

在這種情況下,代碼可以記錄一個輸出消息或執行一些其他動作你只想在DEBUG模式下進行。如果你想在DEBUG模式下編譯,你可以定義DEBUG;否則,你簡單地評論一下。或者,DEBUG的定義可以用編譯器開關來執行。對此的進一步討論以及對調試模式條件編譯的預處理器的使用一般請參見問題987637/define-debug-1