Como lidar com código não-gcc compatível nos cabeçalhos do OS X Yosemite Core

Eu mantenho um programa misto de linha de comando C e C ++ que precisa ser executado no Linux, Windows e OS X. Atualizei recentemente para o Yosemite e minha compilação do OS X agora está falhando. O erro é:

/usr/include/dispatch/object.h:143:15: error: expected identifier or '(' before '^' token

Outras pessoas já encontraram esse bug.

A linha de código que falha é um typedef que usa '^', que é umextensão não-padrão que fornece suporte para fechamentos.

O problema subjacente parece ser que alguns cabeçalhos padrão da Apple estão começando a exigir extensões específicas do Clang. Infelizmente, nosso programa possui um conjunto muito profundo de dependências, algumas das quais não serão compiladas no Clang. Temos usado os compiladores GCC instalados via MacPorts. Eu tenho uma solução alternativa por enquanto: alterar a linha noobject.h cabeçalho para ser compatível com GCC. No entanto, invadir os arquivos de inclusão em/usr/include parece-me pedir problemas.

Algum guru do OS X / Clang pode sugerir maneiras mais sustentáveis de lidar com esse problema? Isso limita a utilidade futura do GCC no OS X?

questionAnswers(1)

yourAnswerToTheQuestion