Próbuję zainicjować tablicę struktur. na elemencie mieć wskaźników funkcji w nich i są określone jako takie:zainicjować tablicę struktur ze wskaźnikami funkcji w nich C
typedef struct{
char str[512];
char *fptr;
} infosection;
następnie staram się tablicę:
infosection section[] = {
("Software", *SoftwarePtr),
("Hardware", *HardwarePtr),
}
ja zdefiniował wskaźników funkcji za pomocą prostego samouczka. Funkcja Software zwraca int
int (*SoftwarePtr)()=NULL;
SoftwarePtr = &Software;
Moje pytanie jest o ostrzeżeniach dostaję po kompilacji.
Inicjalizacja powoduje całkowitą od wskaźnika bez oddanych
Ostrzeżenie referencje wierszy w tablicy sekcji.
Więc mam dwie wątpliwości:
- jestem nadużywania */&/ani dla wskaźnika Próbowałem kombinacje każdy i wciąż wydaje się mieć same warning.I sobie sprawę z znaczenie każdego, po prostu nie wiem, w jaki sposób mają zastosowanie w tym konkretnym przypadku.
Mogę zadeklarować instancję
infosection struct
w szyku, jak to zrobić tutaj? Widziałem wiele przykładów, gdzie ludzie deklarująarray of struct
wfor loop
, Jednak mój produkt końcowy wymaga długiej listy kodowanym mają być zawarte w które array.I chciałbym, aby mój kodportable
tak, że ludzie mogąadd structs
(ciągi, które odpowiadają funkcji do wskazania) w łatwy sposób podobny do listy, jak widać. Jest to jedyny sposób, aby zadeklarować instancję tablicyinfosection section[]; section[0].str="software"; section[0].fptr=SoftwarePtr;
Właśnie w celu wyjaśnienia, mam zrobić trochę badań na structs
, array of structs
i function pointers
. Wydaje się, że kombinacja 3 powoduje kłopoty.
Myślałem, że wskaźniki funkcji były nieważne *(). – Jiminion
@Jim Przeczytałem tutaj: http://www.newty.de/fpt/fpt.html#defi ten wskaźnik funkcji musi być zadeklarowany z typem zwracanym przez funkcję, którą wskazują ... –
'char * fptr; 'To nie jest wskaźnik funkcji, a konwersje pomiędzy' char * 'a wskaźnikiem funkcji nie są dobrze zdefiniowane – Lundin