Por que o tamanho máximo de uma matriz é "muito grande"?
Estou com a mesma impressão queesta resposta, quesize_t
é sempre garantido pelo padrão como sendo grande o suficiente para conter o maior tipo possível de um determinado sistema.
No entanto, esse código falha ao compilar no gcc / Mingw:
#include <stdint.h>
#include <stddef.h>
typedef uint8_t array_t [SIZE_MAX];
erro: o tamanho da matriz 'array_t' é muito grande
Estou entendendo algo errado no padrão aqui? Ésize_t
permitido ser muito grande para uma determinada implementação? Ou isso é outro bug em Mingw?
EDIT: mais pesquisas mostram que
typedef uint8_t array_t [SIZE_MAX/2]; // does compile
typedef uint8_t array_t [SIZE_MAX/2+1]; // does not compile
Que passa a ser o mesmo que
#include <limits.h>
typedef uint8_t array_t [LLONG_MAX]; // does compile
typedef uint8_t array_t [LLONG_MAX+(size_t)1]; // does not compile
Portanto, agora estou inclinado a acreditar que isso é um bug no Mingw, porque definir o tamanho máximo permitido com base em um tipo inteiro assinado não faz sentido.