/vd (Konstruktionsverschiebungen deaktivieren)
Aktualisiert: November 2007
/vd unterstützt fehlerhaftes Verhalten in einer frühen Version von Visual C++ und wird nicht mehr benötigt.
/vdn
Argumente
0
Unterdrückt die vtordisp-Member zur Konstruktor-/Destruktorverschiebung. Wählen Sie diese Option nur dann, wenn Sie sicher sind, dass alle Klassenkonstruktoren und -destruktoren virtuelle Funktionen virtuell aufrufen.1
Ermöglicht das Erstellen ausgeblendeter vtordisp-Member zur Konstruktor-/Destruktorverschiebung. Dieses ist die Standardeinstellung. Diese Option ist die Standardoption.2
Ermöglicht es, dynamic_cast Operator für ein zu erstellendes Objekt zu verwenden. Beispielsweise kann dynamic_cast für die Typumwandlung von einer virtuellen Basisklasse zu einer abgeleiteten Klasse verwendet werden./vd2 fügt ein vtordisp-Feld hinzu, wenn Sie eine virtuelle Basisklasse mit virtuellen Funktionen haben. /vd1 sollte ausreichen. Im häufigsten Fall, in dem /vd2 erforderlich ist, ist die einzige virtuelle Funktion in der virtuellen Basisklasse ein Destruktor.
Hinweise
Diese Optionen betreffen nur C++-Code mit virtuellen Basisklassen.
Visual C++ implementiert die Unterstützung der C++-Konstruktionsverschiebung in Situationen mit virtueller Vererbung. Mit Konstruktionsverschiebung wird das Problem gelöst, das auftritt, wenn ein Konstruktor während der Konstruktion einer weiteren abgeleiteten Klasse eine virtuelle Funktion aufruft, die in einer virtuellen Basisklasse deklariert und in einer abgeleiteten Klasse überschrieben wird.
Das Problem besteht darin, dass der virtuellen Funktion als Folge von Diskrepanzen zwischen den Verschiebungen zu den virtuellen Basisklassen einer Klasse und den Verschiebungen zu ihren abgeleiteten Klassen ein falscher this-Zeiger übergeben werden könnte. Bei dieser Lösung wird für jede virtuelle Basisklasse einer Klasse eine einzige Justierung der Konstruktionsverschiebung bereitgestellt, das so genannte vtordisp-Feld.
Standardmäßig werden vtordisp-Felder eingeführt, wenn der Code benutzerdefinierte Konstruktoren und Destruktoren definiert und auch virtuelle Funktionen virtueller Klassen überschreibt.
Diese Optionen beeinflussen ganze Quelltextdateien. Verwenden Sie vtordisp, um vtordisp-Felder zu unterdrücken und dann klassenweise wieder zu aktivieren.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.
Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.