sirve que para lenguaje historia ejemplos caracteristicas c++ c stdint

c++ - que - lenguaje c pdf



¿Por qué todo el mundo escribe sobre los tipos C estándar? (4)

Si desea utilizar Qt , debe aceptar quint8 , quint16 , etc.

Si desea utilizar GLib , debe recibir guint8 , guint16 , etc.

En Linux hay u32 , s16 y demás.

uC / OS define SINT32 , UINT16 y así sucesivamente.

Y si tiene que usar alguna combinación de esas cosas, es mejor que esté preparado para los problemas. Debido a que en su máquina u32 será typedef d durante long y quint32 será typedef d over int y el compilador se quejará .

¿Por qué todos hacen esto si hay <stdint.h> ? ¿Es esta una especie de tradición para las bibliotecas?


Para las bibliotecas más antiguas, esto es necesario porque el encabezado en cuestión ( stdint.h ) no existía.

Sin embargo, todavía hay un problema: esos tipos ( uint64_t y otros) son una característica opcional en el estándar. Por lo tanto, es posible que una implementación conforme no se envíe con ellos y, por lo tanto, obligue a las bibliotecas a incluirlos hoy en día.


stdint.h no existía cuando estas bibliotecas se estaban desarrollando. Entonces cada biblioteca hizo sus propios typedef s.


stdint.h se ha estandarizado desde 1999. Es más probable que muchas aplicaciones definan (efectivamente alias) tipos para mantener una independencia parcial de la arquitectura subyacente de la máquina.

Proporcionan a los desarrolladores la confianza de que los tipos utilizados en su aplicación coinciden con los supuestos específicos del proyecto sobre el comportamiento que puede no coincidir con el estándar del lenguaje o la implementación del compilador.

La práctica se refleja en el patrón de diseño de Façade orientado a objetos y los desarrolladores abusan de ella invariablemente escribiendo clases de envoltura para todas las bibliotecas importadas.

Cuando los cumplidores eran mucho menos estándar y las arquitecturas de la máquina podían variar de mainframes de 16 bits, 18-bit a 36-bit esto era mucho más una consideración. La práctica es mucho menos relevante ahora en un mundo que converge en sistemas embebidos ARM de 32 bits. Sigue siendo una preocupación para los microcontroladores de gama baja con mapas de memoria odd .


Por lo tanto, tiene el poder de escribir typedef char en int.

Un "horror de codificación" mencionó que el encabezado de una compañía tenía un punto en el que un programador quería un valor booleano, y un char era el tipo lógico nativo para el trabajo, y así escribió typedef bool char . Luego, más tarde, alguien descubrió que un número entero era la opción más lógica y escribió typedef bool int . El resultado, años antes de Unicode, fue virtualmente typedef char int .

Pienso que hay mucha compatibilidad progresista y progresista.