que tienen un código que utiliza campos de bits declara como sigue¿Campos de bits de tipo distinto de int?
typedef struct my{
const char *name;
uint8_t is_alpha : 1;
uint8_t is_hwaccel : 1;
uint8_t x_chroma_shift;
uint8_t y_chroma_shift;
} mystr;
uint8_t
se typedef'ed a unsigned char
.
Construyendo el código en MS-VS 2008 utilizando esta campos de bits da una advertencia de la siguiente manera:
imgconvert.c(60) : warning C4214: nonstandard extension used : bit-field types other than int.
- ¿Hay algunos problemas/problemas potenciales en el uso de campos de bits del tipo que no sea int? ¿Por qué la advertencia?
- ¿Existen otros tipos de archivos de bits de tipo int que permiten la especificación del lenguaje C99 C?
La advertencia es bastante autoexplicativa: __la extensión no estándar utilizada__; su código puede tener problemas de portabilidad. –
@Mehrad: El uso de tipo int es útil desde aspectos de portabilidad solo si todos los objetivos/compiladores tienen el mismo tamaño de entrada. – goldenmean
está escribiendo sobre bitfields aquí, su tamaño está especificado en el código. – AProgrammer