Wie geht Ihr in 64bit Programmen mit der Warnung C4267 um?


  • Mod

    Ich portiere gerade einige Programme und DLLs nach x64.
    Nun erhalte ich natürlich überall wo ich size_t verwendet habe und zum Teil auch mit int mische entsprechende C6267 Warnungen.
    Alleine alleine in der MFC werden String-Längen mit int beschrieben. Die CRT benutzt size_t, das Problem passiert also ganz schnell.

    Und auch ich habe einige Code passagen, die einfach int, als Laufvariable verwenden, aber zum Teil Ihren Start und Endwert aus size_t beziehen.

    Was macht ihr mit diesen Code Passagen?

    A. Ihr baut brav static_cast<int> an alle entsprechenden Stellen ein?
    B. Ihr ignoriert C4267?

    Würde mich mal interessieren.

    BTW: Nur als Hinweis. In allen Codepassagen ist int mit 32bit vollauf genügend um die Größe der Objekte zu beschreiben... ein size_t oder eine Größenbeschreibung von 64bit ist für mich (oder in diesem Fall) unnötig.



  • Fangfrage? size_t ist unsigned - da gab es schon unter 32-bit ein potentielles Problem.

    Ansonsten:

    C: ich passe den Typ meiner (Lauf-)Variablen an, oder
    😨 ich caste, nachdem vorher ggf. auf Überschreiten des Wertebereichs meiner Variablen getestet wurde.



  • Ich baue in so einem Fall das auf size_t um, was leicht geht (Laufvariablen etc.), und caste an den restlichen Stellen.
    Warnings die angezeigt werden "ignorieren" tu ich gar nicht.
    Und mit warning(disable) ganz abdrehen würde ich diese Warning auch nicht (andere schon).


Anmelden zum Antworten