Design Frage: Compiler Preprozessor defines vs Config Header defines
-
Ich habe bisher selten defines benutzt um Code fürs Compilieren aus oder einzuschließen. Da ich gerade an ein paar Klassen arbeite die davon sehr profitieren, frage ich mich ob es einen allgemeinen Konsens gibt welche Variante man eher für die defines verwendet? Es gibt ja sowohl die Möglichkeit sie global in den Projekten einzutragen, als auch einen Config Header zu verwenden in dem man sie bei Bedarf ein/aus kommentieren kann und der von allen Dateien die darauf angewiesen sind genutzt wird. Ich habe beide Varianten schon gesehen. Wie ist bei dem Thema die Meinung?
-
Beides sind gebräuchliche Verfahren. Wenn man kein Konfigurationswerkzeug verwendet (configure ...) ist eine Datei vielleicht einfacher zu benutzen.
-
Ich ziehe ne Config-Header vor.
Ich finde es übersichtlicher/angenehmer wenn so viel wie möglich in .h und .c(pp) Files zu finden ist (d.h. so wenig wie möglich in irgendwelchen anderen Files wie Build-Scripts/Makefiles/Project-Files etc.).Allgemeinen Konsens gibt es da denke ich aber keinen.
-
Danke für die Meinungen.
-
Die variante mit einem config header wird oft auch verwendet, wenn durch aktivieren/deaktivieren von features auch deklarationen in header files von c/c++ projekten/libraries beeinflusst werden.
Damit die deklarationen in den headern mit den binaries übereinstimmen wird dann so ein config header benötigt.
-
Ein weiterer Vorteil von Headern ist auch dass der C++ Parser der IDE (für Syntax-Coloring, Vorschlagslisten etc.) die Defines dort garantiert sieht. Was bei per Commandline-Switch "generierten" Defines vermutlich nicht immer so sein wird.
Es gibt IDEs die das können, aber ob es alle können ... darauf würde ich eher nicht wetten.