Deutsch
Forum

Wofür "Bedingte Kompilierung"?

 

Jac
de
Lad
Kann mir jemand erklären, wozu die bedingte Compilierung gut sein soll? Ich konnte jetzt jedenfalls keinen praktischen Nutzen für mich ableiten...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
01.05.2006  
 



Tjah wie erklärt mans hm - der Compiler ist jetzt Programmierbar, er kann if.

#if dies ist ein w32-system
print das hier wird kompiliert
#else
print kein w32-sys
#endif

Wenn Roland auch noch den einen oder anderen Schalter mit einbaut, sowas wie Debug und Release, dann könntest Du in Deinen Source einfach Debugoutputs einbetten:

#ifdef debug
print bis hier klappts
#endif

Nur wenn Du dann das File mit Debug kompilierst wird der Compiler die Printzeile mit einkompilieren. Die Weitergabeversion kompilierst Du mit Release - diese enthält dann keine Debugzeilen.

Für Bedingtes Kompilieren gibts viele Anwendungsbereiche - so richtig erklären kann ichs aber scheinbar nicht.
 
01.05.2006  
 




Dietmar
Horn
Hallo,

bei der bedingten Compilierung ist es per Compilerschalter möglich, bestimmte Code-Teile z.B. nicht mit zu compilieren, ohne sie immer erst als Kommentar kennzeichnen zu müssen.

Auf diese Art und Weise ist es ganz einfach möglich, aus einem komplexeren Programmcode mehrere unterschiedliche Programmversionen zu erzeugen: z.B. eine Light-Version, eine normale Vollversion und eine Professionell-Version.

Das ginge zwar auch durch das Mitschleppen mehrerer Variablen, die bestimmte Codeteile ausklammern bzw. nicht freischalten.

Doch ein Vorteil der bedingten Compilierung besteht darin, daß Deine Light-Version nicht gecrackt werden kann, weil der Code für die normale und die Professionell-Version gar nicht mit compiliert worden ist. Und was nicht in der EXE-Datei drin ist, das kann bekanntlich nicht gecrackt werden.

Klar, ohne bedingte Compilierung kann man auch leben - nur macht es das Programmieren eben wieder einen Kick komfortabler.

Bei einem kleinen 5000-Zeilen-Progrämmchen ist das sicherlich noch überschaubar und man kann bestimmte Code-Teile noch zu Fuß auskommentieren, je nach Prgrammversion. Doch wenn der Code dann auf die 100000 Zeilen zumarschiert, dann wird das eher unübersichtlich und das ständige Kommentieren und wieder Freischalten artet in Streß aus.

Für meine Programmierkurse könnte ich das z.B. prima gebrauchen. Ich hab da ein größeres Projekt am Laufen, und es bekommen dann eben die totalen Anfänger eine Mini-Version, damit sie von der Vielfalt der Programmfunktionen nicht erschlagen werden, weil sie damit eh noch nichts anzufangen wissen. Je nach Lernfortschritt erhalten sie dann zum Beispiel in Abständen von 3 - 4 Monaten eine anders compilierte Version, in welcher immer mehr freigeschaltet ist. Wenn die entsprechenden Compilerschalter erst mal an den richtigen Stellen im Code gesetzt sind, dann kann ich unbeschwert und lustig weiter drauf los programmieren, ohne mich um die verschiedenen Versionen noch groß kümmern zu müssen (außer am Code-Anfang vor dem Compilieren den entsprechenden Schalter bzw. die jeweilige Bedingung zu setzen.

Wer für seine kleinen Mini-Programme eine solche bedingte Compilierung nicht benötigt, der muß das ja nicht nutzen. Ich finde es aber jedenfalls prima, daß es das nun auch in XProfan gibt.

Gruß
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
01.05.2006  
 




Jac
de
Lad
Hm, ich verstehs jetzt aber so richtig sinnvoll finde ichs nicht.

Wenn ich Debug-Zeug brauche, baue ich eine Messagebox ein, die ich, sobald alles funktioniert, weider entferne. Und unterschiedliche Betriebssysteme bzw. Windows-Versionen sind für mich kein Thema. Das würde ich dann entsprechend im Programm anpassen...Aber DANKE für die Hilfe!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.05.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Leute!

Wenn ich das richtig verstanden habe, könnte man also eine Include-Datei in mehrere Programme einbinden, die darin enthaltenen Procs/Funktionen/Deklarationen usw. wären aber in Abhängigkeit der gesetzten Bedinungen bei Ausführung/Kompilierung eben nicht in allen prfs verfügbar?
Anders gesagt: Wenn ich einen Teil einer Inc nicht brauche, wird er im Moment ja trotzdem mit compiliert (was voraussetzt, dass ich z.B. darin enthaltene globale Variablen dekarieren muss, weil es sonst eine Fehlermeldung gibt.) Und das lässt sich mit bedingter Kompilierung ändern?

SeeYou
Pascal
 
03.05.2006  
 




RGH
Hallo Pascal,
genauso ist es!

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
03.05.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.115 Betrachtungen

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie