Ersetzen von Tabulator durch Leerzeichen



  • DirkB schrieb:

    __x86_64__ ist bei Visual-Studio nicht definiert.

    Hast recht, habe noch die Prüfung auf _M_X64 eingefügt und %I64u verwendet.

    DirkB schrieb:

    long ist auch auf Windows bei 64-Bit-Programmen "nur" 32-Bit groß.
    size_t ist 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_X64 eingefügt.

    Dann ist das immer noch falsch.

    dachschaden schrieb:

    DirkB schrieb:

    long ist auch auf Windows bei 64-Bit-Programmen "nur" 32-Bit groß.
    size_t ist 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 mit size_t zu tun, wenn _M_X64 definiert ist?
    Und was hat %u mit size_t in den anderen Fällen zu tun?

    dachschaden schrieb:

    Deswegen verwende ich auch nur size_t.

    Wenn man davon ausgehen kann, dass int ausreicht, dann nimmt man int ²
    Und in deinem Programm reicht int aus.



  • DirkB schrieb:

    Dann ist das immer noch falsch. [...] %lu steht für unsigned long .

    Schau dir den letzten EDIT an.


  • Mod

    size_t s;
    printf("%llu", (unsigned long long)s);
    

    ?



  • @SeppJ: Ist long long nicht wieder in C99 eingeführt worden?


  • Mod

    dachschaden schrieb:

    @SeppJ: Ist long long nicht 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 long auf Windows 64-Bit 32 Bit groß ist, aber size_t 64 Bit. Und nicht nur bei printf , sondern auch bei sprintf , 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.


Anmelden zum Antworten