Ответ 1
Эти макросы не относятся к Cocoa, они специфичны для CLANG, и их можно указать в командной строке с помощью:
clang -dM -E -x c /dev/null
Различные версии CLANG поставляются с разным количеством флагов функций, которые могут включаться и выключаться во время конфигурации или в зависимости от того, на какой платформе и ОС работает компилятор. Достаточно полный список можно найти в заголовках тестирования с вариантами для каждой поддерживаемой системы, также разбросанными в каталоге тестирования. Документация для каждого зависит от того, является ли флаг конкретным для CLANG или определен в одной из стандартных библиотек, к которым он привязан (например, __llvm__
- определяемый CLANG, но __WCHAR_WIDTH__
определяется LibC). По этой причине действительно нет исчерпывающего списка с окончательной документацией. На разных платформах разрешено делать что-то несколько иначе, если они придерживаются спецификаций языка.
Большинство интересных общедоступных макросов Objective-C существуют в Foundation в нижней части Foundation/NSObjCRuntime.h
.