Quellcode soll pch & stdafx unterstützen. Aber wie?

Gast #6072474
Guten Tag

Ich stehe vor einem kleinen Problem.

Ich habe hier C++ Klassen, die sollen zu Visual Studio 2003 bis 2019 
kompatibel sein.
(Visual Studio 2003 wird benötigt, da hier noch etliche Industrie-PC's & 
Maschinen mit W2K/WinXP laufen und ich Programme dafür schreiben soll.)

Das Problem ist dass die alten Visual Studio StdAfx.h und die Neuen 
Pch.h verwenden.

Bis jetzt habe ich immer vor dem Compilieren mittels Text Ersetzen die 
Header ausgetauscht.
Das geht mir jetzt aber langsam auf die Nerven.

Leider lässt mir Visual Studio nicht zu dass ich mittels Compiler-Makros 
diese Haeder umschalte.

Also wie mache ich das richtig ohne den kompletten Quellcode zu 
duplizieren?
Gast
Wie ich schon geschrieben habe hatte ich das als Erstes versucht.

Leider ergibt folgender Code:
1
#ifdef USE_STDAFX
2
  #include "StdAfx.h"
3
#else
4
  #include "pch.h"
5
#endif

Folgende Fehlermeldung:
*Die Datei "Quelle" kann nicht geöffnet werden: "pch.h".

*PCH-Warnung: Das Headerende darf sich nicht in einem Makro oder 
#if-Block befinden. Es wurde keine IntelliSense-PCH-Datei generiert.


Die einzige Lösung währe alle, aber auch wirklich alle Projekte 
durchzuackern und dort alles von stdafx zu pch umzubenennen.

Und dass ist eine Arbeit die ich mir eigentlich ersparen wollte.
Bernhard schrieb:
> Also wie mache ich das richtig ohne den kompletten Quellcode zu
> duplizieren?

Einfache Lösung:

Man entscheidet sich für eine Version und deaktiviert in der anderen das 
"vorkompilierte Header" Feature.

Dürfte auf modernen CPUs keine große Rolle spielen, ansonsten hilft ein 
Ryzen 12-Core ;-)

Komplizierte Lösung:

Man baut sich die Header jeweils aus Templates beim Build neu passen zum 
Compiler auf.
warum konfigurierst du die Projekte nicht so um, dass sie beide die 
gleichen Dateien verwenden.

Davon abgesehen würde ich die precompiled header gar nicht in die 
Sourcen schreiben, sondern per forced include einbinden.

dann lässt sich auch leichter checken, ob man seine includes sauber hat 
und die files auch ohne das pch funktionieren, da dies ja nur zur 
build-process-optimierung da sein sollte und keine Abhängigkeiten 
verbergen sollte.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.