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.