Zum Inhalt springen

Bestimmten Code daran hindern, zu kompilieren


Schlitzauge

Empfohlene Beiträge

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...