Nous utilisons C89 sur une plateforme embarquée. J'ai tenté d'imprimer un size_t
, Mais cela n'a pas fonctionné:
#include <stdio.h>
int main(void) {
size_t n = 123;
printf("%zu\n",n);
return 0;
}
Au lieu de 123
, J'ai zu
.
D'autres spécificateurs fonctionnent correctement.
Si size_t
existe ne devrait pas zu
être également disponible dans printf
?
Est-ce que je dois contacter le vendeur de ma bibliothèque ou une implémentation de bibliothèque est-elle autorisée à l'exclure?
Si size_t existe, zu ne devrait-il pas également être disponible dans printf?
size_t
existait au moins depuis C89 mais le spécificateur de format respectif %zu
(en particulier le modificateur de longueur z
) a été ajouté à la norme uniquement depuis C99.
Donc, si vous ne pouvez pas utiliser C99 (ou C11) et que vous deviez imprimer size_t
en C89, il vous suffit de recourir à d'autres types existants, tels que:
printf("%lu\n", (unsigned long)n);