2013-01-16 18 views
-4

可能重複:
「static const」 vs 「#define」 in CC/C++ - 它是推薦使用量靜態或者將#define

我首先想到的是,這是隱含的,但有過一個理由爲什麼你會使用const而不是#define

如果你設置了一個全局變量,爲什麼你會想要改變它,並且你不想在全局上保護它?

+3

你能舉一個你問的定義的例子嗎? –

+1

「在#define中使用const」意味着什麼? – juanchopanza

+2

「爲什麼你會使用const而不是#define」是一個錯誤的問題。它應該是「爲什麼你會使用#define而不是const?」答案是「毫無理由」。 –

回答

5

CONST通常替換#define

#define是預處理器的宏,可以做文本更換。你可以用它來定義一個常量或宏,或者做其他各種事情。

常量是一種安全的方式來定義一個編譯時間常數

這兩種機制發生在編譯過程中不同的時間,但在一般情況下,常量是爲了整頓#define的問題。

我很少看到有人這樣做

#define CONSTINT const int 

,但它是合法的。

4

const僅與在運行時傳遞的變量相關,以確保子例程不能更改它們。 #define是一個預處理器編譯時指令,它將您定義的內容替換爲您定義的內容。因此,他們是爲了不同的目的。

2

編輯這是回答你原來的問題,是否你會使用constdefine ...它並沒有真正意義現在你編輯的問題要問不同的東西。

A #define沒有定義變量,所以你不能改變它,所以這個問題沒有意義。

這甚至是不可能的:

#define FOO 99 

int main() 
{ 
    FOO = 98; 
} 

由於預處理程序替換爲更換99宏觀FOO,所以編譯器看到這個代碼:

int main() 
{ 
    99 = 98; 
} 

很顯然這是無稽之談。你不能指定一個文字,它不是一個變量(const或不),它只是一個值。

相關問題