2017-04-19 5 views
2

Ich arbeite mit einem Programm, voll von Compiler-Anweisungen, in Visual Studio programmiert.Wie folgt Präprozessordirektiven während einer Kompilierung

Ich habe einige Änderungen vorgenommen und jetzt bin ich mit einem ungelösten externen Compiler/Linker-Fehler fest.

Ich glaube, dass dies durch die Compiler-Direktiven verursacht wird, die die Implementierung dieser bestimmten Funktion nicht zu erkennen scheinen, und um dies zu untersuchen, möchte ich die Compiler-Anweisungen #ifdef während des Kompilierungsprozesses folgen.

Ich habe bereits versucht, die /P Konfiguration verwenden, aber ich sehe keine Compiler-Direktive in der Fenster.

Weiß jemand, wie man das macht?

+0

Visual Studio sollte Code-Blöcke ausschließen, die durch Makros deaktiviert sind, nicht? – DeiDei

+0

In der Tat, aber das ist nur nützlich im Falle von statischen Compiler-Direktiven, aber in meinem Fall beginnen sie manchmal mit einem '# define', dann wird ein' # undefine' gemacht, und dann wieder zurück, ... und ich ' Ich verliere mich darin (daher höchstwahrscheinlich das ungelöste Äußere), und ich hoffe, dass die Kompilierungsausgabe des Präprozessors mir zeigen kann, was vor sich geht. – Dominique

Antwort

1

Ich glaube, du bist auf dem richtigen Weg mit der /P Option, aber die doc besagt, dass die Ausgabe-Dateien mit einer Erweiterung .i gehen (also wahrscheinlich nicht zu Ihrem Ausgabefenster).

Weiterhin können Sie möglicherweise Hilfe zu jedem Linker-Fehler finden, indem Sie eine Map-Datei generieren; siehe /MAP (Generate Mapfile).

+0

Danke, @Phil, aber es scheint nicht zu funktionieren: Ich habe keine * .i Datei, noch etwas anderes, auch nachdem ich die '/ map' Einstellung eingestellt habe. – Dominique

+0

Zeigt das Ausgabefenster den Compilerbefehl, der ausgeführt wird? Es kann einige Hinweise geben, warum die Datei (en) nicht erzeugt werden. –

+0

Ich habe gerade versucht, die '/ P'-Option auf einer einfachen Konsole App zu aktivieren und zu bauen. Die '.i'-Datei landet im Build-Ausgabeverzeichnis (z. B.' Debug' in meinem Fall). Die Verbindung schlägt als Nebeneffekt fehl (damit Sie Probleme beheben können, nachdem Sie Probleme mit dem Compiler/Präprozessor behoben haben). –

Verwandte Themen