我想問一個關於objective-C的問題,或者可能是C語言。我想問下面#define
的代碼是什麼意思?它喜歡聲明一個變量嗎?目標C中#define的含義是什麼?
#define kMountainNameString @"name"
#define kMountainHeightString @"height"
#define kMountainClimbedDateString @"climbedDate"
我想問一個關於objective-C的問題,或者可能是C語言。我想問下面#define
的代碼是什麼意思?它喜歡聲明一個變量嗎?目標C中#define的含義是什麼?
#define kMountainNameString @"name"
#define kMountainHeightString @"height"
#define kMountainClimbedDateString @"climbedDate"
這是一個簡單的文本替換宏。與C,C++中的工作方式相同。
其中kMountainNameString出現,編譯器將「粘貼」 @「name」。從技術上講,這發生在編譯器之前,被稱爲預處理器的機制發生。
預處理取代kMountainNameString出現的所有與@「名」 在編譯之前就開始了。
#define
是由C繼承了預處理指令,採取的形式
#define identifier value
在一般情況下,它被用來告訴預處理器在傳遞之前,將與給定的文本,以取代identifier
所有實例代碼到編譯器。也可以定義標識符而不使用值作爲編譯器標誌,以防止對相同變量進行多重定義,或者在執行過程中不會更改的機器細節上進行分支。例如,要根據你的處理器的架構,你可以做這樣的事情不同的代碼傳遞給編譯:
#ifdef INTEL86
//some 32-bit code
#else
//some 64-bit code
#endif
當這些定義分配值,它往往是一個好主意,圍繞用括號中的數值,從而保存它作爲一個單元,而不管它存在於上下文的
例如,#define FOO 3 + 7
具有不同的結果#define FOO (3 + 7)
上下面的行的結果,由於算術運算的順序:
a = 3 * FOO
#定義是在C和C++語言的預處理器指令。
它用於定義文本的預處理器宏。 #define用於在整個文件所在的位置進行替換。
#define <macro-name> <replacement-string>
它,做替代的預處理器。編譯器不會看到任何#defines。 – codaddict 2010-07-30 04:19:20
是的,當時(也許還是今天)預處理是由一個單獨的獨立工具完成的。 – seand 2010-07-30 04:22:22
感謝您的回覆。我想問一下這3個元素的數據類型是什麼? – Questions 2010-07-30 04:26:08