Jaffa schrieb:
Damals, also noch vor einigen Jahren, war MinGW nicht in der Lage, long long s mit printf auszugeben.
Das ist kein Problem von MinGW gewesen. Ausnahmsweise gewinnt hierbei mal der Linker, MinGW linkt standardmäßig gegen die msvcrt.dll, das ist richtig, und die hat bis WinXP(?) keinen lld/llu Support für printf. Die msvcrt.dll kommt von Windows, also dem Betriebssystem, nicht vom Compiler. Nur bis VC6 gab es ein wirkliches statischen Linken gegen die vom Compiler selbst bereitgestellte CRT. VC6 Programme ziehen also keine msvcrt.dll explizit an.
Unter WinXP und früher kann es dir also passieren, dass MinGW im C99-Modus 0 Fehler meldet, das aufgerufene printf aber Müll ausgibt. Sowas ist natürlich sehr ärgerlich.
Für solche (alten) Laufzeitumgebungen empfiehlt es sich also, mit MinGW explizit gegen eine neuere CRT zu linken, z.B. msvcr100.dll und die dann auch mitzuliefern.
Jaffa schrieb:
Meines Wissens gibt es aber für long double keinen solchen Workaround.
Was hat long double mit long long zu tun? long double ist C89 und wird somit von jedem C89- und aufwärts Compiler unterstützt, inkl. printf usw.