2011-09-03 84 views
0

可能重複:
"static const" vs "#define" in c是用來定義常量的宏嗎?

宏是對已經賦予了名稱的代碼的片段。每當使用該名稱時,它將被宏的內容替換。 (無需記憶)

所以,人們用它來定義常量,而不是語法的方法:const int num = 1;

這是一個良好的習慣? MACRO是否設置了#include#define

+0

那麼我怎樣才能刪除它,抱歉...有答案... – nEAnnam

回答

2

宏只能用於定義常量之外的其他原因。現在,除非絕對沒有其他選項可用,否則宏觀使用通常是不受歡迎的。

調試複雜的代碼與宏遍佈的宏可能會導致你不止一個頭痛。

GCC docs

宏是對已經賦予了名稱的代碼的片段。每當使用 名稱時,它將被宏的內容替換。

+0

有很多事情宏可以做,沒有別的可以。 –

2

Consts通常是優選的,原因有幾個。例如,它們是一個語言結構(不是由預處理器處理的外部值)。此外,它們包含類型信息,因此它們可以幫助編譯器檢測編譯錯誤等。在大多數情況下,您可以說它們是等效的,但const在「語義上更加正確」。