Chcę utworzyć stały statyczną tablicę być stosowane w całym moim pliku implementacji Objective-C podobny do czegoś takiego na najwyższym poziomie mojego „.m” file:Bezstopniowa zmodyfikowana tablica w zakresie plików
static const int NUM_TYPES = 4;
static int types[NUM_TYPES] = {
1,
2,
3,
4 };
Mam zamiar później użyć pliku NUM_TYPES
, więc chciałem umieścić go w zmiennej.
Jednak, kiedy to zrobić, pojawia się błąd
„Bezstopniowa zmodyfikowane«typy»w zakresie plików”
wnoszę, że może to mieć coś wspólnego z wielkością tablicy bycie zmienną (nie dostaję tej wiadomości, gdy umieszczam tam literał liczb całkowitych, np. static int types[4]
).
chcę to naprawić, ale może ja będę o tym wszystkim nie tak ... Mam 2 goli tutaj:
- Aby mieć tablicę, który jest dostępny w całym pliku
- Do hermetyzacji
NUM_TYPES
do zmiennej, więc nie mam tego samego dosłownego rozrzuconego w różnych miejscach w moim pliku
Jakieś sugestie?
[EDIT] Znalazłem to w C FAQ: http://c-faq.com/ansi/constasconst.html
Co stanie się, jeśli zrobisz to jako definicję? '#define kNUM_TYPES 4'? –
To działa ...z jakiegoś powodu starałem się trzymać z daleka od używania preprocesora, ponieważ myślałem, że pamiętałem gdzieś to czytać, ale po prostu zrobiłem więcej badań i nie mogłem znaleźć dobrego powodu, aby nie używać go w tym przypadku. Myślę, że może być mniej pożądane, jeśli tworzę obiekty w preprocesorze (jak '@" literał NSString "') Jedyną rzeczą, która jest nie tak z twoim kawałkiem kodu jest to, że nie ma potrzeby używania średnika. – Sam
Ach tak, dziękuję za wzniesione głowy i cieszę się, że mogłem pomóc. –