可能重複:
「static const」 vs 「#define」 in CC/C++ - 它是推薦使用量靜態或者將#define
我首先想到的是,這是隱含的,但有過一個理由爲什麼你會使用const
而不是#define
?
如果你設置了一個全局變量,爲什麼你會想要改變它,並且你不想在全局上保護它?
可能重複:
「static const」 vs 「#define」 in CC/C++ - 它是推薦使用量靜態或者將#define
我首先想到的是,這是隱含的,但有過一個理由爲什麼你會使用const
而不是#define
?
如果你設置了一個全局變量,爲什麼你會想要改變它,並且你不想在全局上保護它?
CONST通常替換#define
#define
是預處理器的宏,可以做文本更換。你可以用它來定義一個常量或宏,或者做其他各種事情。
常量是一種安全的方式來定義一個編譯時間常數
這兩種機制發生在編譯過程中不同的時間,但在一般情況下,常量是爲了整頓#define
的問題。
我很少看到有人這樣做
#define CONSTINT const int
,但它是合法的。
const
僅與在運行時傳遞的變量相關,以確保子例程不能更改它們。 #define
是一個預處理器編譯時指令,它將您定義的內容替換爲您定義的內容。因此,他們是爲了不同的目的。
編輯這是回答你原來的問題,是否你會使用const
有define
...它並沒有真正意義現在你編輯的問題要問不同的東西。
A #define
沒有定義變量,所以你不能改變它,所以這個問題沒有意義。
這甚至是不可能的:
#define FOO 99
int main()
{
FOO = 98;
}
由於預處理程序替換爲更換99
宏觀FOO
,所以編譯器看到這個代碼:
int main()
{
99 = 98;
}
很顯然這是無稽之談。你不能指定一個文字,它不是一個變量(const或不),它只是一個值。
你能舉一個你問的定義的例子嗎? –
「在#define中使用const」意味着什麼? – juanchopanza
「爲什麼你會使用const而不是#define」是一個錯誤的問題。它應該是「爲什麼你會使用#define而不是const?」答案是「毫無理由」。 –