Chcę zdefiniować stałą w C ++, aby była widoczna w kilku plikach źródłowych. Mogę sobie wyobrazić następujące sposoby zdefiniowania tego w pliku nagłówkowym:
#define GLOBAL_CONST_VAR 0xFFint GLOBAL_CONST_VAR = 0xFF;- Niektóre funkcje zachowujące wartość (np.
int get_GLOBAL_CONST_VAR()) enum { GLOBAL_CONST_VAR = 0xFF; }const int GLOBAL_CONST_VAR = 0xFF;extern const int GLOBAL_CONST_VAR;iw jednym pliku źródłowymconst int GLOBAL_CONST_VAR = 0xFF;
Opcja (1) - zdecydowanie nie jest opcją, z której chciałbyś skorzystać
Opcja (2) - zdefiniowanie wystąpienia zmiennej w każdym pliku obiektowym za pomocą pliku nagłówkowego
Opcja (3) - IMO w większości przypadków zabija zbyt dużo
Opcja (4) - w wielu przypadkach może nie być dobra, ponieważ enum nie ma konkretnego typu (C ++ 0X doda możliwość zdefiniowania typu)
Dlatego w większości przypadków muszę wybrać między (5) a (6). Moje pytania:
- Co wolisz (5) czy (6)?
- Dlaczego (5) jest w porządku, a (2) nie?