При чтении различных источников C и C ++ я столкнулся с двумя макросами __APPLE__
и __OSX__
. Я нашел множество вариантов использования __OSX__
в различных кодах, особенно тех, которые исходят из *BSD
систем.
Однако иногда я нахожу, что тестирования __OSX__
недостаточно, и мне приходится завершать тесты с помощью макроса __APPLE__
.
Руководство по переносу командной строки Unix Tools на Mac OS X указывает __APPLE__
и дополнительно __APPLE_CC__
, но не упоминает __OSX__
.
Руководство Портирование из GCC гласит:
- Используйте
#ifdef __GNUC__
для переноса любого кода GCC.
- Используйте
#ifdef __APPLE_CC__
для переноса любого кода, специфичного для Mac OS X.
Опять же, нет упоминания о __OSX__
макросе.
Какой макрос предопределен на платформе Mac OS X и в среде разработки XCode, который следует использовать для различения OSX-специфического кода в программах на C / C ++?
Где определен макрос __OSX__
? Это *BSD
конкретный макрос?