2012-08-25 46 views
5

可能重複:
「static const」 vs 「#define」 in c的#define MY_INT VS const int的MY_INT

當我這樣做:

#define WEEKDAYS 7 

和:

const int WEEKDAYS = 7; 

他們有什麼不同?似乎兩者都做同樣的事情 - 爲代碼中的未來使用設定一個恆定值。

+2

您已將此標記爲C和C++。對於不同的語言,答案有所不同。 – hvd

+0

要說**永遠不會**標記C和C++的問題會更容易。 –

+0

@JeffMercado它會更容易,但它會是錯誤的。 :)最簡單的例子是一個問題,具體詢問C和C++之間的區別之一(我記得最近的一個問題,問C爲什麼'sizeof('a')'和sizeof(char)'有區別,但不是C++ ) – hvd

回答

6
#define WEEKDAYS 7 

void f() { 
    int WEEKDAYS = 3; // error 
} 

const int WEEKDAYS_CONST = 7; 

void g() { 
    int WEEKDAYS_CONST = 3; // okay: local scope for WEEKDAYS_CONST 
} 
2
#define WEEKDAYS 7 

替換Word WEEKDAYS的所有發生在源文件與數字7

const int WEEKDAYS = 7; 

定義由7所代表的實際恆定的,你可以在你的代碼中訪問。