Me gusta que mi código advierta de forma gratuita para VS.NET y GCC, y me gusta tener mi código listo para 64 bits.se desborda en size_t adiciones
Hoy escribí un pequeño módulo que trata con memorias intermedias de memoria y proporciona acceso a los datos a través de una interfaz de estilo de archivo (por ejemplo, puede leer bytes, escribir bytes, buscar, etc.).
Como el tipo de datos para la posición de lectura actual y el tamaño que utilicé size_t, ya que parece ser la elección más natural. Entiendo las advertencias y debería funcionar también en 64 bits.
Por si acaso: Mi estructura es similar a esto:
typedef struct
{
unsigned char * m_Data;
size_t m_CurrentReadPosition;
size_t m_DataSize;
} MyMemoryFile;
El signo numérico de size_t
parece no estar definido en la práctica. Una búsqueda de código de Google demostró eso.
Ahora estoy en un dilema: quiero ver las adiciones con size_t
para desbordamientos porque tengo que ocuparme de los datos proporcionados por el usuario y las bibliotecas de terceros utilizarán mi código. Sin embargo, para el control de desbordamiento, debo saber la firma. Hace una gran diferencia en la implementación.
Entonces, ¿cómo diablos debería escribir este código en una plataforma y el compilador de forma independiente?
¿Puedo verificar la firma de size_t
en ejecución o en tiempo de compilación? Eso resolvería mi problema. O tal vez size_t
no fue la mejor idea en primer lugar.
¿Alguna idea?
EDIT: ¡Estoy buscando una solución para el C-language!
¿qué versión de gcc estás usando? Parece que hicieron size_t sin firmar en versiones posteriores e incluidas 2.4 –
Las versiones con las que tengo que lidiar están por todos lados. Hago programación incrustada y a veces tengo que usar versiones de compilación de las edades de piedra. –
"Signedness" es la palabra habitual. – Lassi