apertura del codice di base Postgres, vedo che la maggior parte del codice C è scritto da avere puntatori con la -> notation in modo tale che:C e puntatore notazione
(foo)->next = 5;
so che puntatore notazione ha livelli di precedenza, tali che -> = (* foo). e non è uguale a * foo.
Tuttavia, significa qualcosa quando le parentesi sono al di fuori del nome della variabile e de-referenziare l'indirizzo di prossimo o è semplicemente una convenzione che è endemica per uno stile di codifica?
Fantastico, grazie. Questo è quello che pensavo, e l'ho trovato particolarmente strano visto che era dappertutto nel codebase. – mduvall
Per espanderlo, il motivo per cui utilizzerai questo costrutto è come una cintura di sicurezza nel caso in cui foo sia una macro. È la stessa ragione per cui alcune guide di stile C (ad esempio FreeBSD) suggeriscono che tutte le dichiarazioni di ritorno siano del modulo return (x); invece di restituire solo x; – Benno
Anche se 'pippo' fosse una macro, sarebbe saggio averlo completamente tra parentesi, ad es. '#define foo (blargity-> blah)' –