2012-08-25 7 views
5

Mögliche Duplizieren:
“static const” vs “#define” in c#define MY_INT VS const int MY_INT

Wenn ich dies tun:

#define WEEKDAYS 7 

und dass:

const int WEEKDAYS = 7; 

Irgendein Unterschied zwischen ihnen? scheint, dass beide das gleiche tun - setzt einen konstanten Wert für die zukünftige Verwendung innerhalb des Codes.

+2

Sie haben dies als C und C++ markiert. Die Antworten sind für die verschiedenen Sprachen etwas unterschiedlich. – hvd

+0

Es wäre einfacher zu sagen ** NEVER ** eine Frage sowohl C und C++ zu kennzeichnen. –

+0

@JeffMercado Es wäre einfacher, aber es wäre falsch. :) Das einfachste Beispiel ist eine Frage, die speziell nach einem der Unterschiede zwischen C und C++ fragt (ich erinnere mich an eine kürzlich gestellte Frage, warum 'sizeof ('a')' sich von 'sizeof (char)' in C unterscheidet, aber nicht in C++)) – hvd

Antwort

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 

Ersetzt alle Vorkommen des Wortes WEEKDAYS in der Quelldatei mit der Ziffer 7.

const int WEEKDAYS = 7; 

eine tatsächliche Konstante von 7 dargestellt Definiert, die Sie in Ihrem Code zugreifen können.