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.

10 réponses

1 2
Avatar
DINH Viêt Hoà

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


__MACH__ existe sans doute hors du contexte Mac OS X.
Il probablement défini pour les noyaux Mach (Par exemple OSF/1)

http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html

__APPLE__ existera plutôt dans le cas de systèmes Apple
(peut-être même plus spécifiquement Mac OS X).

--
DINH V. Hoa,

"les gens faut cash leur dire qu'on s'en branle de leur problème avec word"

Avatar
Laurent Wacrenier
DINH Viêt Hoà écrit:
__MACH__ existe sans doute hors du contexte Mac OS X.
Il probablement défini pour les noyaux Mach (Par exemple OSF/1)

http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html

__APPLE__ existera plutôt dans le cas de systèmes Apple
(peut-être même plus spécifiquement Mac OS X).


Ni l'un ni l'autre n'ont l'air d'être défini sur le GCC 3.3 d'Apple.
(mais __APPLE_CC__ l'est encore).

Avatar
bernard tatin
Laurent Wacrenier wrote:
DINH Viêt Hoà écrit:

__MACH__ existe sans doute hors du contexte Mac OS X.
Il probablement défini pour les noyaux Mach (Par exemple OSF/1)

http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html

__APPLE__ existera plutôt dans le cas de systèmes Apple
(peut-être même plus spécifiquement Mac OS X).



Ni l'un ni l'autre n'ont l'air d'être défini sur le GCC 3.3 d'Apple.
(mais __APPLE_CC__ l'est encore).
Ils sont définis pour mon gcc 3.3 qui accompagne mon XCode 1.5. En faisant :

gcc -dM -E - < /dev/null | sort
on a la liste de toutes les constantes prédéfinies.

Bernard.


Avatar
lucsky
bernard tatin wrote:

Ils sont définis pour mon gcc 3.3 qui accompagne mon XCode 1.5. En faisant :
gcc -dM -E - < /dev/null | sort
on a la liste de toutes les constantes prédéfinies.


Hooooooo mais que c'est bien comme truc utile ça !!

Merci :))

--
Luc Heinrich -

Avatar
bernard tatin
Luc Heinrich wrote:
bernard tatin wrote:


Ils sont définis pour mon gcc 3.3 qui accompagne mon XCode 1.5. En faisant :
gcc -dM -E - < /dev/null | sort
on a la liste de toutes les constantes prédéfinies.



Hooooooo mais que c'est bien comme truc utile ça !!

Merci :))

Je ne l'ai pas trouvé tout seul, mais j'ai oublié où. Je me souviens que

c'était un forum en anglais.

Bernard.


Avatar
Laurent PERON
bernard tatin wrote:

Ils sont définis pour mon gcc 3.3 qui accompagne mon XCode 1.5. En
faisant :
gcc -dM -E - < /dev/null | sort
on a la liste de toutes les constantes prédéfinies.


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

Merci

Laurent.

Avatar
Schmurtz
Laurent PERON wrote:

bernard tatin wrote:

Ils sont définis pour mon gcc 3.3 qui accompagne mon XCode 1.5. En
faisant :
gcc -dM -E - < /dev/null | sort
on a la liste de toutes les constantes prédéfinies.


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.

__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é. 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).

--
Schmurtz


Avatar
Patrick Stadelmann
In article <ctmr72$61c$, Schmurtz
wrote:

Personnellement, je conseillerais __APPLE__ pour être entièrement
automatisé. 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).


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

Patrick
--
Patrick Stadelmann

Avatar
bernard tatin
Patrick Stadelmann wrote:
In article <ctmr72$61c$, Schmurtz
wrote:


Personnellement, je conseillerais __APPLE__ pour être entièrement
automatisé. 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).



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

Patrick
Et pour le code spécifique à Darwin - ça tourne aussi sur de l'Intel,

pas que sur des macs - il faut faire quoi ? Le -DDARWIN est bien utile
mais j'aurais préféré un __DARWIN__ certains jours.

Bernard.


Avatar
Laurent PERON
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 ? :)

Laurent

1 2