При чтении различных источников 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
конкретным макросом?