2009-07-27 13 views
7

sto lavorando su una libreria che ampiamente utilizzati costrutti comeschema di denominazione per typedef

typedef struct foo_bar_s { 
    ... 
} foo_bar_t; 

E 'una cattiva idea quella di utilizzare il suffisso _t, perché è un POSIX riservata namespace. Anche il suffisso _s per le strutture è abbastanza inutile. Così ho pensato che posso cambiare tutto per

typedef struct foo_bar { 
    ... 
} foo_bar; 

o se il nome struct non è necessario

typedef struct { 
    ... 
} foo_bar; 

Tuttavia, non riesco a distinguere le typedef da simboli regolari (variabili, etc.) più. È davvero un grosso problema e dovrei usare uno schema di denominazione diverso per i typedef? O non importa così tanto?

Non sono davvero così sicuro. Cosa ne pensi? Inoltre, quali raccomandazioni avete per schemi di denominazione typedef?

risposta

8

Sebbene "_t" sia riservato, è molto improbabile che si verifichi un problema. Tuttavia, questa convenzione è un residuo di vecchie versioni di C in cui era richiesta questa sintassi per nome le strutture, e così al giorno d'oggi si può semplicemente scrivere qualcosa di simile alla seguente (omettendo il typedef ei nomi typedef):

 
struct name_of_struct 
{ 
    type1 member1; 
    type2 member2; 
    // ... 
    typeN memberN; 
}; 

E sì, è possibile utilizzare i commenti a riga singola ("// ...") nello standard corrente di C.

+6

_t è infatti riservato da POSIX –

+0

Ora che due persone lo hanno detto. Ho ricontrollato e si scopre che hai ragione. Lo aggiusterò. –

+4

_t non è riservato da POSIX nel senso che nessun altro è autorizzato a utilizzare tali nomi. Piuttosto, le implementazioni POSIX possono utilizzare solo i nomi dei tipi di questo modulo. – starblue

5

Uso le convenzioni di denominazione utilizzate in Dave Hanson C Interfaces and Implementations: un tipo è denominato con il nome del modulo e una maiuscola T. Ad esempio, il tipo di sequenze è Seq_T e il tipo di tabelle hash è Table_T. Nell'implementazione di un modulo Hanson utilizza #define per abbreviare solo allo   T. Questo è fondamentalmente le convenzioni Modula-3 applicate alla programmazione C, ma trovo che dopo un breve shock iniziale funzioni bene.

Problemi correlati