Mam wiele różnych 3-osiowych czujników, dla których piszę kod testowy. W plikach C dla każdego z nich, mam ten sam ciąg char zdefiniowane:Jak zdefiniować tablicę ciągów znaków w pliku nagłówkowym?
char axis[3][8] = {"X", "Y", "Z"}
którego używam, kiedy „za” wyniki pętli wydrukować oś, która jest zepsuty tak:
DEVICETEST_LOG("%s Failed %s axis for Min range\n",device_name[DUT], axis[i]);
Zastanowiłem się, aby zaoszczędzić trochę przestrzeni, w której mógłbym zdefiniować tablicę znaków w pliku nagłówkowym, aby móc korzystać z całego miejsca.
Próbowałem wielu rzeczy, ale nie mogę uzyskać tablicy ciągów zdefiniowanej w pliku nagłówkowym, którą mogę przetworzyć, aby przekazać kompilację.
ah to ma sens, ale wydaje się, że basackwards ... Tak więc plik nagłówkowy, który włączam wszędzie, wskazuje wszystkie pozostałe pliki C do lokalnej definicji "myfile.c". – user1054210
Więc mimo że umieściłem plik nagłówkowy w innych plikach c, otrzymuję błąd kompilacji "undefined refrence". Tak więc w myheader.h mam >> zewnętrzny znak * AXIS [3] [8]; oraz w pliku myfile.c Mam >> char * AXIS [3] [8] = {{"X"}, {"Y"}, {"Z"}}; i włączam plik myheader.h do pliku otherfile.c. Próbowałem też kilku innych sztuczek, ale one nie synchronizują się. – user1054210
Coś innego jest nie tak, ponieważ to działa ... co się stanie, jeśli usuniesz makro z równania i po prostu spróbujesz uzyskać dostęp do tablicy w innym module kodu, który zawiera plik nagłówkowy? Po drugie, powinno to być tylko "const char * AXIS [3] = {" X "," Y "," Z "};' ponieważ są to literały łańcuchowe ... skąd czerpiesz '8'? – Jason