Sto provando a verificare la versione di libstdc++
perché std::regex
is implemented, but largely broken, nelle versioni di libstdc++
distribuito con GCC prima della versione 4.9.0.Come posso testare la versione di libstdC++, non GCC, in fase di compilazione?
Nota che:
ho bisogno di testare la versione di
libstdc++
, non GCC perché Clang supporta anche utilizzandolibstdc++
come la libreria standard. Questo esclude lo testing the__GNUC_PATCHLEVEL__
,__GNUC__
, and__GNUC_MINOR__
macros.Il
__GLIBCXX__
macro è una data, non un numero di versione e does not increase monotonically. Ad esempio, GCC 4.8.4 viene fornito con#define __GLIBCXX__ 20150426
, che è più recente della data di rilascio di GCC 4.9.0.
Esiste un modo portatile per testare la versione di libstdc++
che non dipende sull'uso GCC mia compilatore?
Se si sa che è rotto in una certa versione, quindi provare a vedere se la sua rotta, se lo è, allora si ha la versione rotto, se non, allora avete la versione funzionante. – ydobonebi
In pratica, il modo migliore per determinare una versione in cui non viene fornita alcuna versione è testare comportamenti noti. Volevo solo chiarirlo. A parte questo, con che sistema operativo stai lavorando? Sto controllando su Windows se posso determinare i miei numeri di ersione o no ... – ydobonebi
Quinn Roundy: Preferirei testare effettivamente la versione. Il bug si verifica solo in fase di esecuzione, quindi dovrei compilare (ed eseguire) un programma di test come parte del mio processo di compilazione. Questo potrebbe, potenzialmente, rompersi durante la compilazione incrociata. –