OVH Cloud OVH Cloud

__APPLE__ et __MACH__

12 réponses
Avatar
bernard tatin
Bonjour,

Quelle est la différence entre
#if defined(__APPLE__)
et
#if defined(__MACH__)


Merci pour les tuyaux.

Bernard.

2 réponses

1 2
Avatar
Patrick Stadelmann
In article <41ff9880$0$27053$,
Laurent PERON wrote:

Patrick Stadelmann wrote:

Apple préconise d'utiliser __APPLE__ et __MACH__ pour identifier du code
spécifique à Mac OS X.


URI d'un document de référence ? :)


http://developer.apple.com --> Search : __APPLE__ __MACH__

Patrick
--
Patrick Stadelmann


Avatar
ericb
Bonjour,

Laurent PERON wrote:


Est-ce qu'il y a de telles macro constantes *officielles*
à utiliser lorsqu'on fait un portage d'un soft unix
vers macosX ?



__APPLE__ est définie lorsque l'on compile avec un compilateur Apple :
en gros, quand on compile avec le gcc livré avec Xcode (et sûrement
Darwin aussi). Je ne pense pas qu'il y ait d'autre compilateur dans
lequels cette constante est définie.


Et ça fonctionne parfaitement


__MACH__ est définie lorsque le système est basé sur un noyau Mach. Celà
signifie que les API Mach sont disponibles. Ce n'est sûrement pas
uniquement utilisé par apple, vu qu'il existe d'autre systèmes basés sur
ce noyau (dont MachOS, GNU/Hurd).

Personnellement, je conseillerais __APPLE__ pour être entièrement
automatisé.


Moi aussi (voir + bas)

Par contre, si on peut se le permettre, il ne faut pas
hésiter à créer ses propres constantes du genre MACOS, LINUX définies
dans la ligne de commande du compilateur (-DMACOS=1 -DLINUX=0).


Ça dépend du contexte et de la taille de l'appli : pour une appli de
taille respectable et dont la compilation est assez compliquée, comme
OpenOffice.org, la variable MACOSX est déjà utilisée par les outils pour
la compilation, et pour des choses qui sont différentes.

Exemple : le suffixe des bibliothèques est .dylib au lieu d'être .so ->
$MACOSX renseigne sur ce point.
On pourrait aussi utiliser cette variable dans un autre contexte, mais
cela manque de précision, et pourrait générer des problèmes difficiles à
identifier.

Le fait d'utiliser __APPLE__ est d'autant plus important que c'est cette
variable qui, lorsqu'elle est définie, qui permet d'obtenir
l'environnement ( avec environ = *_NSGetEnviron() ; par exemple )


Conclusion :

+1 en ce qui me concerne pour

#ifdef __APPLE__
....
#endif


Mes 2 centimes...


--
eric bachard
French OpenOffice.org Community contributor (build of french releases
for Linux PPC and Mac OS X / X11)
See : <http://fr.openoffice.org>


1 2