Wiem, że to całkiem idiomatyczny lub dobry styl przynajmniej w C, aby zadeklarować stałe liczbowe jako enum
s zamiast s ich.Jak zadeklarować stałe ciągów w C?
/* bad style */
#define MAXLINE 1024
/* good/better style */
enum {
MAX_LINE = 1024
};
Czy istnieje odpowiednik reguły dla definicji stałych łańcuchowych?
/* is this good style? */
#define HELLO "Hello World"
/* or is this better? */
const char *HELLO2 = "Howdy";
Co wolisz? Jeśli to możliwe, pokaż kilka wad obu metod.
Dziękuję za wyjaśnienie. Powodem użycia 'wyliczeń zamiast stałych makr lub' const int' dla stałych wartości całkowitych jest fakt, że jest to jedyny bezpieczny sposób deklarowania stałej liczby całkowitej, która może być przenośna jako granica tablicowa. Cóż ... Łączenie ciągów w czasie kompilacji prawie mnie sprzedało przy użyciu '# define's dla ciągów znaków, ale pozostanę przy" const char * "dla bezpieczeństwa typu, używając" statycznego ", jeśli jest to stosowne. W skrócie użyję 'wyliczenia' dla stałych całkowitych i zmiennych' const' dla całej reszty. –
Tatt, sugerowałbym, żebyś nie trzymał się niczego. * Nie wszystkie stałe są równe *. Jeśli nie chcesz się łączyć, nie potrzebujesz # definicji, jeśli nie będziesz potrzebował również rozmiaru, nie obchodzi cię to wcale. To, czego kompletnie nie widzę, to to, jak "const char *" jest lepsze niż "const char []' * gdzie statyczny ma zastosowanie *. Ale potem znowu, jeśli nie potrzebujesz rozmiaru, to też nie jest gorszy ;-) –