So che è piuttosto idiomatico, o almeno di stile, in C per dichiarare costanti numeriche come enum
s invece di #define
.Come si dichiarano le costanti di stringa in C?
/* bad style */
#define MAXLINE 1024
/* good/better style */
enum {
MAX_LINE = 1024
};
Esiste una regola equivalente per la definizione delle costanti di stringa?
/* is this good style? */
#define HELLO "Hello World"
/* or is this better? */
const char *HELLO2 = "Howdy";
Cosa preferisci? Se possibile, mostra alcuni inconvenienti di entrambi i metodi.
Grazie per la spiegazione. La ragione per usare 'enum's invece di macro constanti o' const int' per valori interi costanti è il fatto che questo è l'unico modo sicuro per dichiarare un numero intero costante che può essere usato come un limite di array. Beh ... La concatenazione della stringa del tempo di compilazione mi ha quasi convinto a usare '# define's per le stringhe, ma mi limiterò a' const char * 'per la sicurezza del tipo usando' static' dove applicabile. In breve userò 'enum' per le costanti intere e le variabili' const' per tutto il resto. –
tatt, suggerirei che non si attacchi a nulla. * Non tutte le costanti sono uguali *. Se non hai intenzione di concatenare, non hai bisogno di #define, se non hai nemmeno bisogno delle dimensioni, non ti interessa affatto. Quello che non riesco a vedere è come 'const char *' è meglio di 'const char []' * dove static è applicabile *. Ma poi di nuovo, se non hai bisogno delle dimensioni, non è neanche peggio ;-) Gli array –