uso tipos ppt enum definidos c typedef

c - tipos - typedef union



Estándar para tipificación (7)

El estilo es una cosa muy personal y muy subjetiva, le recomiendo que use solo lo que quiera, o cualquier convención que se use en su organización.

gcc 4.4.4 c89

Me pregunto si hay algún estándar que deba seguirse al crear tipos.

por ejemplo:

typedef struct date { } date_t;

También he visto a gente poner un capital como este:

typedef struct date { } Date;

O para variables

typedef unsigned int Age;

o esto

typedef unsigned int age_t;

¿Hay algún estándar que deba seguirse? Personalmente prefiero la fijación posterior con un _t.

Muchas gracias por las sugerencias,


En general, la mayoría de los idiomas permiten el uso de sentencias de casos para clases o tipos no estandarizados. Creo que esta es la mejor práctica, y en los idiomas que lo permiten, además use espacios de nombres o módulos para evitar choques. En idiomas que no lo hacen (como C), un prefijo donde sea necesario nunca se desvía. Para usar un ejemplo en varios idiomas para algo en lo que estoy trabajando actualmente:

C: typedef uint32_t CpfsMode; C++: namespace Cpfs { typedef uint32_t Mode; } Python: cpfs.Mode = int


Gran parte de esto se reduce a las preferencias personales, y la clave es ser coherente (o si tiene una convención de la empresa, úselo). El siguiente artículo tiene algunas guías de nombres:

http://www.montefiore.ulg.ac.be/~piater/Cours/Coding-Style/

Tenga en cuenta que cambia la parte ''_t'':

typedef struct node_t { void *content; struct node_t *next; } Node; typedef enum season_t { SPRING, SUMMER, FALL, WINTER } Season;

Hubo una discusión anterior sobre las convenciones de nomenclatura de C aquí:

¿Cuáles son las convenciones de nombres más comunes en C?


No creo que exista ninguna convención de denominación "estándar". De hecho, varían tan violentamente entre proyectos (y también entre otros lenguajes como C ++ o Java) que personalmente he adoptado camelCase en todos los idiomas.

Siempre defino mis estructuras a través de typedef , así que solo uso el nombre que le hubiera dado de otra manera (esto es también lo que hace la API de Win32). En caso de que necesite una estructura de autorreferencia, prefijo un _ al nombre de la estructura en bruto:

typedef struct _Node { _Node *next; } Node;


Si está trabajando en una plataforma que sigue los estándares POSIX, debe tener en cuenta que cualquier identificador que finalice en _t está reservado para los tipos definidos por POSIX, por lo que no es recomendable seguir la misma convención para sus propios tipos.


Sigue lo que el resto de la gente hace por tu proyecto para que todo se mantenga constante. De lo contrario, ambos son técnicamente aceptables.


Usted puede simplemente utilizar

typedef struct toto toto;

  1. La struct toto (etiqueta) y el typedef nombre toto (identificador) están en diferentes "namescopes" de C, por lo que son compatibles, pero al final apuntan al mismo tipo.
  2. Como beneficio adicional, esto también es compatible con C ++, que generalmente tiene implícitamente un typedef .
  3. Como otra ventaja adicional, esto impide declarar una variable toto que puede ser bastante confusa a veces.