Quiero imprimir una variable del tipo size_t
en C, pero parece que size_t
tiene un alias para diferentes tipos de variables en diferentes arquitecturas. Por ejemplo, en una máquina (64 bits) el siguiente código no lanza ninguna advertencia:Plataforma independiente size_t Formatos de formato en c?
size_t size = 1;
printf("the size is %ld", size);
pero en mi otra máquina (32 bits) el código anterior genera el siguiente mensaje de advertencia:
advertencia: formato '% ld' espera escribir 'long int *', pero el argumento 3 tiene tipo 'size_t *'
sospecho que esto se debe a la diferencia en el tamaño del puntero, por lo que en mi Máquina de 64 bits size_t
tiene un alias de long int
("%ld"
), mientras que en mi máquina de 32 bits size_t
tiene un alias de otro tipo.
¿Hay un especificador de formato específicamente para size_t
?
Su mensaje de advertencia no coincide con el código. La advertencia menciona punteros, su código no tiene ninguno. ¿Has eliminado algunos '&' en algún lugar? – Jens
¿Punteros? No, no recibo ninguna advertencia sobre punteros, de hecho, dependiendo de en qué máquina ejecute el código, a veces no recibo ninguna advertencia. Pruebe el siguiente código de prueba: #include int main() { size_t size = 1; printf ("el tamaño es% ld", tamaño); return 0; } –
Consulte también [Cadena de formato de plataforma cruzada para variables del tipo size_t?] (Http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size-t) . – legoscia