2009-07-27 8 views
7

que estoy trabajando en una biblioteca que utilizan ampliamente como construccionesesquema de nomenclatura para typedefs

typedef struct foo_bar_s { 
    ... 
} foo_bar_t; 

Es una mala idea utilizar el sufijo _t, porque es un espacio de nombres POSIX reservados. El sufijo _s para estructuras también es bastante inútil. Así que pensé que puedo cambiarlo todo a

typedef struct foo_bar { 
    ... 
} foo_bar; 

o si el nombre struct no es necesario

typedef struct { 
    ... 
} foo_bar; 

Sin embargo, no puedo distinguir typedefs de símbolos normales (variables, etc.) nunca más. ¿Es realmente tan importante y debería usar un esquema de nombres adecuado diferente para los typedefs? ¿O no importa tanto?

Realmente no estoy tan seguro. ¿Qué piensas? Además, ¿qué recomendaciones tiene para los esquemas de nombres typedef?

Respuesta

8

Aunque "_t" está reservado, es muy poco probable que encuentre un problema. Sin embargo, esta convención es un remanente de las versiones anteriores de C, donde se requiere esta sintaxis con el fin de estructuras de nombre, y así hoy en día se puede simplemente escribir algo como lo siguiente (omitiendo el typedef y los nombres typedef):

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

Y sí, puede usar comentarios de línea única ("// ...") en el estándar actual de C.

+6

_t está de hecho reservado por POSIX –

+0

Ahora que dos personas lo dijeron. Comprobé dos veces, y resulta que tienes razón. Voy a arreglar eso. –

+4

_t no está reservado por POSIX en el sentido de que nadie más está autorizado a utilizar dichos nombres. Por el contrario, las implementaciones POSIX solo pueden usar nombres de tipos de esta forma. – starblue

5

Utilizo las convenciones de nomenclatura utilizadas en Dave Hanson's C Interfaces and Implementations: un tipo se nombra con el nombre del módulo y una T. mayúscula Entonces, por ejemplo, el tipo de secuencias es Seq_T, y el tipo de tablas hash es Table_T. Dentro de la implementación de un módulo Hanson usa #define para abreviar solo a   T. Esto es básicamente las convenciones Modula-3 aplicadas a la programación en C, pero me parece que después de una breve descarga inicial funciona bien.

Cuestiones relacionadas