При чтении различных источников 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/С++?
Где определяется макрос __OSX__? Является ли это *BSD конкретным макросом?