2012-08-25 25 views
5

Duplicar posible:
“static const” vs “#define” in c#define MY_INT VS const int MY_INT

Cuando hago esto:

#define WEEKDAYS 7 

y que:

const int WEEKDAYS = 7; 

¿Alguna diferencia entre ellos? parece que ambos hacen lo mismo: establece un valor constante para el uso futuro dentro del código.

+2

Lo ha etiquetado como C y C++. Las respuestas son algo diferentes para los diferentes idiomas. – hvd

+0

Sería más fácil decir ** NUNCA ** etiquetar una pregunta tanto C como C++. –

+0

@JeffMercado Sería más fácil, pero estaría mal. :) El ejemplo más fácil es una pregunta que pregunta específicamente sobre una de las diferencias entre C y C++ (recuerdo una pregunta reciente que pregunta por qué 'sizeof ('a')' difiere de 'sizeof (char)' en C, pero no en C++) – hvd

Respuesta

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 

sustituye a todas aparición de la palabra WEEKDAYS en el archivo de origen con el dígito 7.

const int WEEKDAYS = 7; 

Define una constante real representado por 7 que se puede acceder en el código.