1

yop,

Je veux imprimer un entier de type size_t, soit ici un long long unsigned intJ'essaye donc de formater avec %llu, suivant cette doc : http://manpagesfr.free.fr/man/man3/printf.3.html
Je compile avec une variante de MinGW 64 bits (TDM-GCC), et j'ai ce message :
D:/.../CPLC/main.c:57:12: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t {aka long long unsigned int}' [-Wformat=]
Qu'est-ce que je fais de travers d'une part, et ensuite comment résoudre le problème sans caster comme un porc ?

Merci d'avance. smile

2

Déjà, il faudrait vérifier si cet avertissement n'est pas un faux positif. Essaie d'afficher un entier qu ne tient pas dans 32 bits avec %llu pour voir.

Et sinon, essaie %I64u, le vieux format Microsoft pour ça.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Ahahah, ça marche avec %I64u, c'est quand même dingue ça grin
Merci beaucoup Kevin chinois

ps -> pour les intéressés, TDM-GCC est en 64 bits, et link statiquement avec la lib standard, ce qui évite de ballader des dépendances avec le binaire. smile

4

En l'occurrence, il ne linke pas statiquement avec la bibliothèque qui implémente printf, mais utilise la msvcrt.dll du système, c'est bien pour ça qu'il faut utiliser le spécificateur Microsoft. Les versions plus récentes de Visual C++ utilisent de nouveaux noms pour les bibliothèques standard (msvcr60.dll, msvcr70.dll etc.), mais ces versions ne sont pas universellement préinstallées, donc MinGW/MinGW64/TDM-GCC sont bloqués avec la vieille msvcrt.dll. Il y a la bibliothèque statique libmingwex.a, mais elle ne peut pas tout remplacer. Il me semble qu'il y ait maintenant une implémentation conforme C99 de printf dans la libmingwex, mais il faut probablement l'activer explicitement.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

Apparemment, pour avoir le printf C99, il faut soit recompiler mingwrt/mingwex/stdio avec -DINSTALL_AS_DEFAULT=1, soit utiliser des defines lors de la compilation de ton logiciel, par exemple -Dprintf=__mingw_printf (soit carrément coder __mingw_printf en dur dans le code de ton logiciel).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

Folco (./1):
Je veux imprimer un entier de type size_t, soit ici un long long unsigned int
J'essaye donc de formater avec %llu, suivant cette doc : http://manpagesfr.free.fr/man/man3/printf.3.html
D'après ta doc :
Modificateur de longueur
...
z        La conversion entière suivante correspond à un argument size_t ou ssize_t.
Tu as essayé %zu ?
So much code to write, so little time.

7

Ha ben nitro a été plus rapide.

Il faut utiliser "z" pour size_t et non "d" ou "u"
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

8

Ah ben merci, je n'avais pas été aussi loin dans la doc, n'ayant pas idée que ça existait triso

Kevin -> Ok, mais c'est pour un petit programme de 70 lignes (que nitro aurait certainement fait en 3 lignes de perl trigic), donc je vais pas me casser à recompiler grin Mais merci quand même pour les infos smile

9

%zu est aussi du C99, donc ça ne marchera probablement pas non plus avec la msvcrt.dll.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité