size_t que c gcc sizeof c99 size-t

c - que - Tamaño máximo de size_t



size_t arduino (2)

El estándar dice que SIZE_MAX debe ser al menos 65535.

No especifica ningún límite superior, y la implementación de gcc es perfectamente válida.

Citando la referencia que citó (énfasis agregado):

Su valor definido por la implementación deberá ser igual o mayor en magnitud (valor absoluto) que el valor correspondiente dado a continuación, con el mismo signo.

Sé que en C tipo de retorno del operador sizeof es size_t siendo un tipo entero sin signo definido en <stdint.h> . Lo que significa que su tamaño máximo debería ser 65535 como se indica en la norma C99 7.18.3 :

limit of size_t SIZE_MAX 65535

Sin embargo, en gcc-4.8.2 archivo de cabecera stdint.h ha definido su tamaño mucho mayor que 65535 contradice con el estándar C99 , como se muestra a continuación:

/* Limit of `size_t'' type. */ # if __WORDSIZE == 64 # define SIZE_MAX (18446744073709551615UL) # else # define SIZE_MAX (4294967295U) # endif

Por favor, ayúdeme a comprender por qué hay una diferencia o una razón detrás de mi interpretación errónea.


Sugeriría un elenco del más grande actualmente (sin firma) como en:

#define SIZE_T_MAX size_t(0xffffffffffffffffULL)

Esto debería dar resultados relevantes para la compilación de 32 y 64 bits.