Le 04/02/2018 à 16:34
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
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Le 04/02/2018 à 16:46
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.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
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é
Le 04/02/2018 à 16:50
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
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Le 04/02/2018 à 17:13
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.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
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é
Le 04/02/2018 à 17:21
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).
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
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é
Le 04/02/2018 à 17:30
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 ?
Le 04/02/2018 à 17:43
Ha ben nitro a été plus rapide.

Il faut utiliser "z" pour size_t et non "d" ou "u"
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Le 04/02/2018 à 20:21
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
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Le 05/02/2018 à 01:09
%zu est aussi du C99, donc ça ne marchera probablement pas non plus avec la msvcrt.dll.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
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é