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.