Bedingte Kompilierung - #ifdef Codes?

Herakles

Profifragensteller
Moin!

Ich habe vor einiger Zeit ein Programm unter Linux geschrieben und möchte das nun gern auf FreeBSD portieren. Das ist so in etwas das erste mal, dass ich nun mit bedingter Kompilierung in Kontakt komme.

Ich habe beim schmökern in fremdem Code gesehen, dass man überprüfen kann, ob man auf einer FreeBSD-Maschine arbeitet, indem man

Code:
#ifdef __FreeBSD__
(...)
#endif

im Code unterbringt.

Woher kennt man solche defines, bzw. finde ich irgendwo in meinem System eine Liste, in der all diese Defines stehen?

Danke für jeden Tipp, Herakles
 
Kommt drauf an. Wenn du den GNU-Präprozessor verwendest, findest du in cpp(1) folgenden Hinweis:
Code:
       -dM    Instead of outputting the result of preprocessing, output a list
              of  `#define'  directives  for all the macros defined during the
              execution of  the  preprocessor,  including  predefined  macros.
              This  gives  you a way of finding out what is predefined in your
              version of the preprocessor; assuming you have no file  `foo.h',
              the command

              touch foo.h; cpp -dM foo.h

              will show the values of any predefined macros.
In diesem Zusammenhang würde mich persönlich noch interessieren, wie man das bei dem Sun-Präprozessor unter Solaris/SPARC rausbekommt. Dessen Manpage ist entweder sehr dürftig oder das Teil hat wirklich nicht mehr zu bieten.
 
soweit ich weis kanst du nach belieben halt mit der #ifdef halt maschine-spezifischen code so einrichten das du dan nur irgendwo in einer globalen datei wo alles zusammen leuft einfach "#define __FREEBSD__" (oda wie auch imma du das nennst.) reinschreibst und dan wird der coder verwendet wen nicht dan wird er einfach ausgelasen.

mfg omni
 
Moin!

Ich habe vor einiger Zeit ein Programm unter Linux geschrieben und möchte das nun gern auf FreeBSD portieren. Das ist so in etwas das erste mal, dass ich nun mit bedingter Kompilierung in Kontakt komme.

Ich habe beim schmökern in fremdem Code gesehen, dass man überprüfen kann, ob man auf einer FreeBSD-Maschine arbeitet, indem man

Code:
#ifdef __FreeBSD__
(...)
#endif

im Code unterbringt.

Woher kennt man solche defines, bzw. finde ich irgendwo in meinem System eine Liste, in der all diese Defines stehen?

Danke für jeden Tipp, Herakles


# Gelöscht

@ 0815 DANKE das hatte ich nicht bedacht, hast vollkommen recht.


gruss der Gecko <offtopic> Ich hasse C </offtopic> :D
 
Zuletzt bearbeitet:
@Gecko:
Abgesehen davon, daß deine Antwort völlig an der Frage des OP vorbei geht, ist es ziemlich unverschämt, fremde Werke ohne Quellenangabe zu kopieren. Laut http://www.cc5x.de/Haftungsausschluss.htm ist das Kopieren dieses Textes "ohne ausdrückliche Zustimmung des Autors nicht gestattet." Sofern du diese Zustimmung nicht erhalten hast, solltest du deinen Post lieber löschen.

Ich finde es schon erschreckend, wie leichtfertig manchmal mit dem Urheberrecht umgegangen wird. In einem BSD-Forum sollte man das eigentlich besser wissen.
 
Zurück
Oben