Ersetzen von Tabulator durch Leerzeichen
-
DirkB schrieb:
__x86_64__ ist bei Visual-Studio nicht definiert.
Hast recht, habe noch die Prüfung auf
_M_X64eingefügt und%I64uverwendet.DirkB schrieb:
longist auch auf Windows bei 64-Bit-Programmen "nur" 32-Bit groß.
size_tist aber auf Windows bei 64-Bit-Programmen durchaus 64-Bit groß.Das weiß ich. Deswegen verwende ich auch nur size_t.
-
dachschaden schrieb:
DirkB schrieb:
__x86_64__ ist bei Visual-Studio nicht definiert.
Hast recht, habe noch die Prüfung auf
_M_X64eingefügt.Dann ist das immer noch falsch.
dachschaden schrieb:
DirkB schrieb:
longist auch auf Windows bei 64-Bit-Programmen "nur" 32-Bit groß.
size_tist aber auf Windows bei 64-Bit-Programmen durchaus 64-Bit groß.Das weiß ich.
Anscheinend nicht. %lu steht für
unsigned long.
Was hat das mitsize_tzu tun, wenn _M_X64 definiert ist?
Und was hat %u mitsize_tin den anderen Fällen zu tun?dachschaden schrieb:
Deswegen verwende ich auch nur size_t.
Wenn man davon ausgehen kann, dass
intausreicht, dann nimmt manint²
Und in deinem Programm reichtintaus.
-
DirkB schrieb:
Dann ist das immer noch falsch. [...] %lu steht für
unsigned long.Schau dir den letzten EDIT an.
-
size_t s; printf("%llu", (unsigned long long)s);?
-
@SeppJ: Ist
long longnicht wieder in C99 eingeführt worden?
-
dachschaden schrieb:
@SeppJ: Ist
long longnicht wieder in C99 eingeführt worden?Dann nimmste eben unsigned long. Die Fälle, in denen selbst das nicht mehr funktioniert sind weitaus konstruierter als die Fälle, in denen deine jetzige Lösung nicht funktioniert.
-
Auf jeder Windows-Maschine kann dir das auf die Füße fallen. Weil
longauf Windows 64-Bit 32 Bit groß ist, abersize_t64 Bit. Und nicht nur beiprintf, sondern auch beisprintf,snprintf... hat DirkB doch schon geschrieben. Wenn ich mir Objekten arbeite, die >4 GB groß sind, bekomme ich Müll.
So ein Problem hatte ich schon mal, und es überhaupt zu finden hat mich 10 Stunden meines Lebens gekostet. Da riskiere ich lieber eine Warnung vom Compiler und eine nachträgliche Korrektur der Definitionen.