Laden...

bedingte Compilierung

Erstellt von deti61 vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.955 Views
D
deti61 Themenstarter:in
95 Beiträge seit 2005
vor 18 Jahren
bedingte Compilierung

Hi all,
ich habe ein "kleines" Problem mit der Definition von Compiler Konstanten in VS 2005.
Ich möchte ein Teil des Codes nur benutzen, wenn eine Konstante definiert ist.
Also:


#if MY_CONSTANT
tu etwas
#else
#endif

Sollte eigentlich einfach sein:
Projekt/Properties/Build/Conditional compilation symbols:
Dort eintragen: "/define:MY_CONSTANT"
Geht aber nicht.

Kennt jemand eine Lösung?
Detlef

B
107 Beiträge seit 2006
vor 18 Jahren

Mit
#define MY_CONSTANT
bzw.
#undef MY_CONSTANT
im Quelltext sollte es funktionieren.

D
deti61 Themenstarter:in
95 Beiträge seit 2005
vor 18 Jahren

Hi bonnet,
das geht natürlich, aber:
es gibt ja nun keine Headerfiles mehr, sodass solche Änderungen nicht einfach in anderen Dateien benutzt werden können.

Das Ziel sollte sein, durch eine einfache Änderung in der Configuration ( nicht nur Debug/ Release, sondern zusätzliches Projekt "MitMessung") die Ausgabe zu beeinflußen.

Detlef

T
111 Beiträge seit 2005
vor 18 Jahren

Hi Detlef

sollte auch funktionieren, allerdings brauchst Du nur den Namen der Variablen im Feld eingeben (ohne /define)

mfG Thomas

D
deti61 Themenstarter:in
95 Beiträge seit 2005
vor 18 Jahren

Hi Thomas,
es geht!

Ich dachte aber, ich hätte es auch so ausprobiert. Manchmal spielt einem das Gedächnis einen Streich...
Detlef

S
8.746 Beiträge seit 2005
vor 18 Jahren

Wenn es darum geht, grundsätzlich eine ganze Funktion rauszudrehen (global, also unabhängig vom Aufruf) dann sei auf das Conditional-Attribut verwiesen. Ist aber nur für Methoden erlaubt, die void zurückliefern. Vorteil ist, dass auch dieser Code vom Compiler gecheckt wird, selbst wenn er nicht genutzt wird.

D
deti61 Themenstarter:in
95 Beiträge seit 2005
vor 18 Jahren

Hi svenson,
habe ich jetzt auch gelesen.
Ein Feature, was ich dann vielleicht in der Zukunft benutzen werde.
Der Mensch ist doch ein Gewohnheitstier, und da kennt man eben nur #ifdef von C++.
Danke
Detlef

S
8.746 Beiträge seit 2005
vor 18 Jahren

Ehrlich gesagt: Ich denke, man hat das nur, weil man sonst - mangels Makros - hätte Assert() und Debug() nicht implementieren können. Es mag charmant sein, das ifdef nicht auf der Seite des Aufrufers machen zu müssen, aber die Beschränkung auf void und die Tatsache, dass es nur global geht, beschränkt den Einsatz doch auf einige wenige Fälle.

6.862 Beiträge seit 2003
vor 18 Jahren

Original von deti61
Der Mensch ist doch ein Gewohnheitstier, und da kennt man eben nur #ifdef von C++.

Hauptsache du kommst nicht auf die Idee und willst in C# Macros benutzen gG

Baka wa shinanakya naoranai.

Mein XING Profil.