ho mantenere un C++ programma a riga di comando C misto e che ha bisogno per funzionare su Linux, Windows e OS X. Recentemente ho aggiornato a Yosemite e il mio OS X la build sta fallendo. L'errore è:Come affrontare il codice non-gcc compatibile nelle intestazioni OS X Yosemite core
/usr/include/dispatch/object.h:143:15: error: expected identifier or '(' before '^' token
Other folks have run into this bug.
La riga di codice che non riesce è un typedef che utilizza '^' che è un non-standard extension providing support for closures.
Il problema sottostante sembra essere che alcune intestazioni standard di Apple stanno iniziando a richiedere estensioni specifiche di Clang. Sfortunatamente il nostro programma ha un insieme molto profondo di dipendenze, alcune delle quali non verranno compilate sotto Clang. Abbiamo usato i compilatori GCC installati tramite MacPorts. Per il momento ho una soluzione: modificare la linea nell'intestazione object.h
in modo che sia compatibile con GCC. Tuttavia, l'hacking dei file include sotto /usr/include
mi sembra un problema.
Qualche guru OS X/Clang può suggerire metodi più sostenibili per affrontare questo problema? Questo limita l'utilità futura di GCC su OS X?
Clang è l'unico compilatore supportato da Apple per OS X. GCC è deprecato e non supportata. Non mi aspetterei che continui a funzionare. –
temo che @VariableLengthCoder sia probabilmente per lo più corretto. –
Questo mi dà il sadz. Oh beh, siamo ancora in grado di costruire sotto Snow Leopard per ora. –