Zum Inhalt springen

Bestimmten Code daran hindern, zu kompilieren


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo COM,

ich habe mal eine Frage zum Thema plattformübergreifender Programmierung.

Vorweg, JA, ich weiß, was Cross-Compiler sind, aber darum geht es nicht.

Bsp. ich habe zwei gleichlautende Funktionen a();

sie unterscheiden sich lediglich ein wenig in Ihrer Ausführung, machen aber dasselbe.

Während die eine Funktion für Windows-Systeme gemacht ist, ist die andere für Linux-Systeme gemacht. Nun würde ich gerne, beides unter einem Hut bingen, sprich, in die gleiche Header-/Quellcode/-Lib-Datei.

Wie wir wissen, kann ein Kompiler, nicht ohne Weiteres, JEDEN Linux-optimierten Code, auch unter Windows kompilieren, auch nicht umgekehrt. Z.B. gerade dann, wenn am Bsp. die Windows-a()-Funktion intern auch noch auf WinAPI-Funktionen zurückgreift. Unter Linux, kann diese dann nämlich nicht kompiliert werden (von Wine-Ersatz mal abgesehen).

Ich möchte aber auch nicht zwei extra Bibliotheken schreiben, eine für Windows, eine für Linux.

Gibt es die Möglichkeit / Direktiven, Code zu kapseln, zu umschließen, ähnlich wie #ifndef, etc., der dafür sorgt, dass der Kompiler in Abhängigkeit des gerade verwendeten Systems, die richtige Funktion mit kompiliert und die andere einfach überspringt?

Bsp. so hier:

#if_System_Win

a();

#ifend

#if_System_Linux

a();

#ifend

Ich weiß, kein funktionierender Code nach allen derzeitigen Syntaxen. Soll ja nur verdeutlichen, was ich meine.

Um es nochmal kurz zu fassen, schmeiß ich einfach mal die Frage im konkreten Detail in den Raum:

Kann man einem Kompiler dazu verleiten, bei bestimmten Situationen, gewisse Codeschnipsel, einfach nicht mit zu kompilieren? Quasi wie Kommentar-Zeilen zu behandeln?

Wenn nicht, was gibt es für Möglichkeiten, ähnliches zu realsiieren?

THX im Voraus!!!

Grüße

Schlitzauge :):):)

Bearbeitet von Schlitzauge
Geschrieben (bearbeitet)

Klar,

#ifdef XY

#endif

Deiner IDE teilst du mit welcher define für welches profil gesetzt wird. Voila.

Bspw. #ifdef _MS_DOS_ oder #ifdef WIN32...

Bearbeitet von Klischeepunk
Code tags
Geschrieben

Betrifft dies nur IDE´s oder auch auf reinen Kompilerumgebungen bezogen?

Ganz banal gefragt, mit obiger Lösung, würde der Kompiler bei Vorhandensein des einen Falls, z.B. WIN32, automatisch die anderen Codeschnipsel, z.B. des _MS_DOS_, überspringen, als wären es Kommentarzeilen? Kann man so Linux-optimierte UND Windows-optimierte Codes in eine Datei bringen oder ist das ganze doch nicht so einfach, wie es sich anhört?

Grüße

Schlitzauge :-)

Geschrieben

Du wirst ihm halt wohl oder übel irgendwo die defines mitgeben müssen. Wie du das nun realisierst (einbinden einer Header, Compiler Flag, von hand #define WIN32 angeben, whatev) ist dir überlassen. Letztendlich muss dein Compiler wissen was er tun soll, sonst macht er Mist. Wie das bei deinem Compiler am komfortabelsten funktioniert sagt dir: Das Handbuch.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...