Как справиться с не-gcc-совместимым кодом в заголовках OS X Yosemite Core
Я поддерживаю смешанную программу командной строки на C и C ++, которая должна работать в Linux, Windows и OS X. Недавно я обновился до Yosemite, и моя сборка OS X теперь не работает. Ошибка:
/usr/include/dispatch/object.h:143:15: error: expected identifier or '(' before '^' token
Другие люди столкнулись с этой ошибкой.
Строка кода, которая терпит неудачу, является typedef, который использует '^', который являетсянестандартное расширение, обеспечивающее поддержку замыканий.
Основная проблема заключается в том, что некоторые стандартные заголовки Apple начинают требовать специальных расширений Clang. К сожалению, наша программа имеет очень глубокий набор зависимостей, некоторые из которых не компилируются под Clang. Мы использовали компиляторы GCC, установленные через MacPorts. У меня есть обходной путь: изменение строки вobject.h
заголовок должен быть GCC-совместимым. Тем не менее, взломать включаемые файлы под/usr/include
звучит для меня как просьба о неприятностях.
Могут ли какие-нибудь гуру OS X / Clang предложить более устойчивые способы решения этой проблемы? Это ограничивает будущую полезность GCC на OS X?