¿Cuál es el punto de hacer un nuevo typedef para cada variable?

El título es un poco exagerado, pero sigo sin entenderlo.

Como un ejemplo más básico, tome el size_t escribir desde time.h:

size_t <...> se define en el archivo de encabezado (entre otros) como un tipo integral sin signo.

¿Cuál es el punto de incluso cambiar el nombre? unsigned int a size_t? Tales cosas a menudo hacen que el código sea más difícil de entender, porque hacen que un desarrollador busque esas declaraciones de tipo para entenderlas, incluso si se trata de un tipo básico renombrado, o tal vez alguna clase/estructura. Sin embargo, veo que esto se hace mucho en diferentes bibliotecas.

preguntado el 25 de agosto de 12 a las 14:08

Estoy de acuerdo en que typedefs puede hacer que sea más difícil leer el código porque tienes que seguir mirando hacia arriba para ver qué es algo. MFC de Microsoft tiene typdefs de typedefs de typedefs. Cuando descubres qué es realmente la cosa, olvidaste cuál era el nombre original. -

en sistemas de 32 bits size_t es de 4 bytes, en sistemas de 64 bits size_t será de 8 bytes, pero int seguirá siendo de 4 bytes -

4 Respuestas

¿Cuál es el punto de incluso cambiar el nombre de unsigned int a size_t? Tales cosas a menudo hacen que el código sea más difícil de entender.

  1. hace codigo más fácil para entender, inmediatamente sabes lo que representa el objeto, "es una especie de tamaño". Compara eso con un simple int. El tipo subyacente real no es de interés inmediato: mientras no lo sepa, su código sigue siendo portátil

  2. Hoy puede ser un unsigned int pero tal vez mañana va a ser un unsigned long long. Mientras su programa use los tipos correctos, estará preparado para el futuro

hacen que un desarrollador busque esas declaraciones de tipo

No mires: tendrás la tentación de hacer cosas no portátiles con él. Piénselo de la forma en que pensaría en un C++ std::string. Sabes lo que hace, sabes cómo usarlo, pero realmente no sabes lo que hay dentro.

Respondido 25 ago 12, 14:08

size_se utiliza para asegurar portabilidad. size_t no es siempre "int sin firmar", pero es el tamaño que puede representar el objeto más grande posible en la plataforma dada.

Respondido 25 ago 12, 14:08

Para una biblioteca de bajo nivel como la biblioteca C estándar, typedef son importantes para aumentar la portabilidad de los programas de usuario; no hay debate.

Por otro lado, usar alias en tus programas es una pregunta interesante. Hay esencialmente dos razones:

  • para simplificar sus expresiones, por ejemplo, un puntero a función o un agregado;
  • para introducir una abstracción.

Respondido 25 ago 12, 15:08

El motivo es que los tipos pueden darte una mejor idea de lo que representa la variable. En lugar de solo ver un montón de entradas por ahí, tipos como std::size_t, std::ptrdiff_t, etc. le brindan más información sobre lo que está sucediendo.

Respondido 26 ago 12, 21:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.