Forum: PC-Programmierung Präprozessordirektiven in C#


von Sameth (Gast)


Lesenswert?

Seit wann gibt es bitte in C# Präprozessordirektiven sowie in C? Ich 
bilde mir ein neulich gelesen zu haben dass es das für c# nicht gibt, 
dafür aber Constanten und weiters.

War das bei der Visual C# 2003 Version auch noch dabei oder ist das neu 
dazu gekommen?

von Jasch (Gast)


Lesenswert?

Sameth schrieb:
> Seit wann gibt es bitte in C# Präprozessordirektiven sowie in C? Ich
> bilde mir ein neulich gelesen zu haben dass es das für c# nicht gibt,
> dafür aber Constanten und weiters.
>
> War das bei der Visual C# 2003 Version auch noch dabei oder ist das neu
> dazu gekommen?

In VS 2003 ist das definitiv dabei - kannst Du noch auf MSDN nachlesen.

Die Info für VS 2002 (die erste Version mit .NET) hat MS schon entsorgt, 
aber soweit ich mich zu erinnern glaube war es da auch schon drin.

Und weil Du Dich wunderst warum es das überhaupt fur C# gibt: Naja, MS 
hatte grosses damit vor und richtige Programmiersprachen haben halt 
bedingte Kompilierung... ;-)

von Jasch (Gast)


Lesenswert?

Jasch schrieb:
> Sameth schrieb:
>> Seit wann gibt es bitte in C# Präprozessordirektiven sowie in C? Ich

Ähh, ach ja, mit Präprozessor hat das alles nix zu tun, den gibt es nun 
wirklich nicht für C#.

von Tom E. (tkon)


Lesenswert?

Die Halde weiß bescheid: 
http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29#Preprocessor

Aber wirklich viel damit anfangen kann man glaub ich nicht.

von HalfBit (Gast)


Lesenswert?

Die Antwort hierzu ist recht simpel: Genau genommen sind dies nur 
Compiler-Direktiven, die wie der C-Präprozessor-Anweisungen aussehen. Es 
findet aber keine Ersetzung statt, aber man kann auch Code-Abschitte 
für verschiedene Konfigurationen ein- und ausblenden (#if .. #endif). 
Die Symbole können in der Projektmappe oder im Code (#define) festgelegt 
werden.

Die zweite Funktion sind pragmas, etwa um Warnungen aus- und wieder 
einzuschalten (#pragma warning disable 1234), und Entwickler-definierte 
Warnungen.

Die dritte und letzte Funktion ist die Hervorhebung von Code-Blöcken für 
die IDE oder den Programmierer.

Alle anderen Funktionen des Präprozessors von C fehlen in C#. Beispiel: 
Makros als Alternativen zu den Inline-Funktionen machen in C# keinen 
Sinn, da der JIT-Compiler Hotspots automatisch erkennt 
(http://blogs.msdn.com/b/ericgu/archive/2004/01/29/64644.aspx).

Die Direktiven waren ab Version 1.0 dabei. (language specification)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.