Frage zu "(Laufzeit-Typeninformation aktivieren)"



  • Guten Morgen,

    Ich programmiere eine MFC Anwendung, welche auf der selben Code-Base einmal für Win32 und einmal für WinCE kompilieren kann.

    im Code verwende ich "dynamic_cast" auf polymorphe typen. Wenn ich die Anwendun in Win32 konfiguriere funktioniert das casting auch.

    Wenn ich den Code in WinCE kompiliere bekomme ich eine Warnung "C4541" , die mir sagt, achtung ich muss die Laufzeit Typumwandlung aktivieren für die (WinCE Konfiguration) . Hab ich getan, und funktioniert auch:)

    Aber was genau passiert denn wenn diese Option aktiviert ist bei der Kompilierung? Ich nehme es wird mehr code erzeugt, welche die type-tables bla bla (kenn mich nich so aus) und wird alles langsamer!?

    Da mein WinCE Zielsystem eh langsam ist, würde ich dann gerne sowas vermeiden.. oder kann ich das vernachlässigen? Weshalb muss man explizit sowas ein/ausschalten!?

    Danke für im Voraus



  • Siehe passende Compiler-Option /GR (Laufzeit-Typeninformation aktivieren):

    Mit /GR wird jedoch die Größe der RDATA-Abschnitte Ihres Images erhöht.

    Es werden also die Typinformationen der kompilierten (virtuellen) Klassen mit in die EXE geschrieben und diese dadurch größer. Und zur Laufzeit müssen dann selbstverständlich diese Infos wieder ausgelesen und verglichen werden (im Gegensatz zu einem static_cast).



  • @Th69 sagte in Frage zu "(Laufzeit-Typeninformation aktivieren)":

    Und zur Laufzeit müssen dann selbstverständlich diese Infos wieder ausgelesen und verglichen werden (im Gegensatz zu einem static_cast).

    Ja. Man sollte vielleicht dazusagen (schreiben): es wird nur dort langsamer wo man auch die entsprechenden Features verwendet. Stellen wo man nichts macht was RTTI braucht sollten auch nicht langsamer werden.



  • Hallo ihr beiden,

    danke für die Infos. Dann kann ich das ja so lassen;)


Log in to reply