Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
bedingte Compilierung
deti61
myCSharp.de - Member



Dabei seit:
Beiträge: 95
Herkunft: Göttingen

Themenstarter:

bedingte Compilierung

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
bonnet
myCSharp.de - Member



Dabei seit:
Beiträge: 107
Herkunft: Leipzig

beantworten | zitieren | melden

Mit
#define MY_CONSTANT
bzw.
#undef MY_CONSTANT
im Quelltext sollte es funktionieren.
private Nachricht | Beiträge des Benutzers
deti61
myCSharp.de - Member



Dabei seit:
Beiträge: 95
Herkunft: Göttingen

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
thomas.at
myCSharp.de - Member



Dabei seit:
Beiträge: 102
Herkunft: Österreich / Wien

beantworten | zitieren | melden

Hi Detlef

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

mfG Thomas
private Nachricht | Beiträge des Benutzers
deti61
myCSharp.de - Member



Dabei seit:
Beiträge: 95
Herkunft: Göttingen

Themenstarter:

beantworten | zitieren | melden

Hi Thomas,
es geht!

Ich dachte aber, ich hätte es auch so ausprobiert. Manchmal spielt einem das Gedächnis einen Streich...
Detlef
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
deti61
myCSharp.de - Member



Dabei seit:
Beiträge: 95
Herkunft: Göttingen

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 7290
Herkunft: Esslingen

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers