Desidero stampare una variabile di tipo size_t
in C ma sembra che l'opzione size_t
sia associata a diversi tipi di variabile su diverse architetture. Ad esempio, su una macchina (a 64 bit), il seguente codice non genera nessun avvertimento:Platform independent size_t Formato specificatori in c?
size_t size = 1;
printf("the size is %ld", size);
ma sulla mia altra macchina (32-bit) il codice precedente produce il seguente messaggio di avviso:
avvertimento: formato '% ld' si aspetta digitare 'long int *', ma l'argomento 3 è di tipo 'size_t *'
ho il sospetto che questo è dovuto alla differenza di dimensioni del puntatore, in modo che il mio Macchina a 64 bit size_t
ha un alias su un long int
("%ld"
), mentre sul mio computer a 32 bit size_t
è sottoposto a alias in un altro tipo.
Esiste uno specificatore di formato specifico per size_t
?
Il messaggio di avviso non corrisponde al codice. L'avvertimento indica i puntatori, il tuo codice non ne ha. Hai rimosso alcuni '&' da qualche parte? – Jens
Puntatori? No, non ricevo alcun avvertimento sui puntatori, infatti a seconda del computer su cui eseguo quel codice a volte non ricevo alcun avviso. Prova il seguente codice di prova: #include int main() { size_t size = 1; printf ("la dimensione è% ld", dimensione); return 0; } –
Vedere anche [Stringa di formato cross platform per variabili di tipo size_t?] (Http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size-t) . – legoscia