Ich weiß, es ist ziemlich idiomatisch, oder zumindest guter Stil, in C, um numerische Konstanten als enum
s statt #define
zu deklarieren.Wie deklarieren Sie String-Konstanten in C?
/* bad style */
#define MAXLINE 1024
/* good/better style */
enum {
MAX_LINE = 1024
};
Gibt es eine äquivalente Regel für die Definition von Stringkonstanten?
/* is this good style? */
#define HELLO "Hello World"
/* or is this better? */
const char *HELLO2 = "Howdy";
Was bevorzugen Sie? Wenn möglich, zeigen Sie einige Nachteile beider Methoden.
Vielen Dank für Ihre Erklärung. Der Grund, 'enum' anstelle von Makrokonstanten oder' const int' für konstante Ganzzahlwerte zu verwenden, ist die Tatsache, dass dies der einzige typsichere Weg ist, eine konstante Ganzzahl zu deklarieren, die portabel als Arraygrenze verwendet werden kann. Nun ... Die String-Verkettung der Kompilierzeit hat mich beinahe dazu gebracht, '# define's für Strings zu verwenden, aber ich bleibe bei' const char * 'für Typ-Sicherheit, wo ich' static' verwende. Kurz gesagt werde ich 'enum' für Integer-Konstanten und' const'-Variablen für den Rest verwenden. –
Tatt, ich würde vorschlagen, dass Sie sich an nichts halten. * Nicht alle Konstanten sind gleich *. Wenn du nicht verketten willst, brauchst du #define nicht, wenn du die Größe auch nicht brauchst, interessiert dich das überhaupt nicht. Was ich absolut nicht sehe, ist, wie 'const char *' besser ist als 'const char []' * wo static anwendbar ist *. Aber wenn Sie die Größe nicht brauchen, ist es auch nicht schlechter ;-) –