Sé que es bastante idiomático, o un buen estilo al menos, en C declarar constantes numéricas como enum
s en lugar de #define
ing them.¿Cómo declaras las constantes de cadena en C?
/* bad style */
#define MAXLINE 1024
/* good/better style */
enum {
MAX_LINE = 1024
};
¿Existe una regla equivalente para la definición de constantes de cadena?
/* is this good style? */
#define HELLO "Hello World"
/* or is this better? */
const char *HELLO2 = "Howdy";
¿Qué prefieres? Si es posible, muestre algunos inconvenientes de cualquiera de los métodos.
Gracias por su explicación. La razón para usar 'enum's en lugar de macro constantes o' const int' para valores enteros constantes es el hecho de que esta es la única forma segura de tipo para declarar un entero constante que puede ser portátil usado como un límite de matriz. Bueno ... La concatenación de cadenas de tiempo de compilación casi me vendió usando '# define's para cadenas, pero me atengo a' const char * 'para seguridad tipo usando' static' cuando corresponda. En resumen, usaré 'enum' para las constantes enteras y las variables' const' para todo el resto. –
tatt, sugiero que no se apegue a nada. * No todas las constantes son iguales *. Si no vas a concatenar, no necesitas #define, si tampoco vas a necesitar el tamaño, no te importa en absoluto. Lo que no veo totalmente es cómo 'const char *' es mejor que 'const char []' * donde estática es aplicable *. Pero, de nuevo, si no necesita el tamaño, tampoco es peor ;-) –