Penso di poter soffrire della temuta "malattia da programmatore accidentale", almeno quando si tratta di typedef e puntatori di funzione. Quindi ho sperimentato tutti i tipi di combinazioni che coinvolgono questi per analizzare i risultati sulla base di tutto l'output che ottengo.Come funziona typedef per i puntatori di funzioni
Ma mentre continuavo a provare diverse combinazioni, invece di analizzare i risultati, ora sono appena perso.
Spero che voi ragazzi mi aiutiate a capire questo casino.
primo esempio di codice
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = &do_something;
pr(); // Hello World
secondo codice di esempio
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = do_something;
pr(); // Hello World
Come fare sia il codice di cui sopra esempi funzionano, è come se '&' non ha alcun effetto sul nome della funzione
terzo codice esempio
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print pr;
pr = do_something; // compile error
pr = &do_something; // compile error
pr();
Speravo una delle assegnazioni di cui sopra per lavorare qui, ma accidenti! Io davvero non capisco i puntatori di funzione (e forse anche typedef).
Questo può aiutare http://stackoverflow.com/questions/4298654/operator-optional-in-function-pointer-assignment –
Umm ... Penso che dovresti farti un 'Expert C Programming' esplora C's var definire le regole. Cercherò di trovarlo online per te – shengy
solo per la programmazione Expert C di Google, il primo è il libro. Cerca "Come si forma una dichiarazione" e penso che avrai la risposta – shengy