Qual è un buon riferimento per documentare i modelli d'uso di & # 8220; .h & # 8221; file in C? [duplicare]
-
05-07-2019 - |
Domanda
Questa domanda ha già una risposta qui:
- Dovrei usare #include nelle intestazioni? 9 risposte
" C Interfacce e implementazioni " mostra alcuni schemi di utilizzo interessanti per le strutture dati, ma sono sicuro che ce ne sono altri là fuori.
Soluzione
Guarda lo standard di codifica C del Goddard Space Flight Center (NASA) (questo URL ). Ha alcune linee guida buone e interessanti.
Una linea guida specifica, che ho adottato per il mio codice, è che le intestazioni dovrebbero essere autosufficienti. Cioè, dovresti essere in grado di scrivere:
#include "header.h"
e il codice dovrebbe essere compilato correttamente, includendo tutte le altre intestazioni necessarie, indipendentemente da ciò che è accaduto prima. Il modo semplice per garantire ciò è includere l'intestazione nell'origine dell'implementazione, come prima intestazione. Se viene compilato, l'intestazione è autonoma. Se non si compila, sistemare le cose in modo che lo faccia. Ovviamente, ciò richiede anche che le intestazioni siano idempotenti: funzionano allo stesso modo indipendentemente dalla frequenza con cui sono incluse. C'è un linguaggio standard anche per questo:
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
...operational body of header.h...
#endif /* HEADER_H_INCLUDED */
È indispensabile, ovviamente, avere #define nella parte superiore del file, non nella parte inferiore. Altrimenti, se un'intestazione inclusa include anche header.h, allora si finisce con un ciclo infinito - non salutare. Anche se decidi di seguire una strategia di:
#ifndef HEADER_H_INCLUDED
#include "header.h"
#endif /* HEADER_H_INCLUDED */
nel codice che include l'intestazione - una pratica che è non consigliata - è importante includere anche le protezioni nell'intestazione stessa.
Aggiornamento 01/05/2011
L'URL GSFC sopra non funziona più. Puoi trovare ulteriori informazioni nelle risposte alla domanda Dovrei usare #include nelle intestazioni , che contiene anche un riferimento incrociato a questa domanda.
Aggiornamento 24/03/2012
È possibile accedere e scaricare lo standard di codifica C della NASA di riferimento tramite l'archivio Internet:
Altri suggerimenti
Makeheaders è un approccio interessante: utilizzare uno strumento per generare le intestazioni. Makeheaders è usato in cvstrac di DR Hipp e fossile .
Potresti dare un'occhiata al C ++ Software Design su larga scala di John Lakos.