2011-07-16 3 views
4

Je construis une bibliothèque tierce en mode 32 bits sous OSX 10.6 (la bibliothèque est Xerces 2.8). J'ai déterminé que la définition du préprocesseur __LP64__ est définie. Cependant, pour autant que je puisse voir, il n'est pas défini dans les fichiers de configuration du projet tiers, et faire une recherche globale à travers tous les fichiers (via le Finder) pour #define __LP64__ ne me révèle pas où cela est défini par le système.Où __LP64__ est-il défini pour les versions par défaut des applications C++ sur OSX 10.6?

Je construis la bibliothèque via make à la ligne de commande (Xcode n'est pas impliqué).

Je voudrais savoir où est défini __LP64__ - et quel est son but, étant donné que je construis le projet en mode 32 bits.

Répondre

11

Il est défini automatiquement par le compilateur plutôt que dans n'importe quel en-tête. Si elle est définie, vous construisez des cibles 64 bits.

(A-tête pourrait définir si le compilateur n'a pas déjà, mais il ne devrait pas. Si vous pensez que cela est le cas, ajoutez #define __LP64__ à votre code, et de regarder l'erreur lors de prétraiter pour déterminer la emplacement de la définition précédente.)

+12

La commande 'cpp -dM/dev/null' vous donnera une liste de toutes les macros qui sont définies par votre préprocesseur. –

+0

'cpp -dM/dev/null' est un or! Merci pour ça. –

Questions connexes