5Fermer7
Kevin KoflerLe 01/08/2008 à 00:50
PpHd (./4) :
__GNUC__ est définit pour dire que le compilateur supporte le GNU LANGUAGE C (ou C++) et non pas que c'est le compilateur GNU C.

__GNUC__ est défini pour dire que c'est GCC, après il y a des compilateurs concurrents (en général propriétaires, genre ICC d'Intel) qui abusent et définissent le même symbole pour faire compiler les sources écrites pour GCC sans modifications, mais cette pratique est très mal vue. Le problème est que le projet GCC ne peut pas empêcher cette pratique (pour les mêmes raisons pour lesquelles on ne peut pas empêcher MinGW de définir _WIN32, donc ce n'est pas forcément une mauvaise chose).

Enfin bon, ce n'est pas si grave que ça normalement, parce que si le compilateur définit __GNUC__, c'est pour dire qu'il est compatible GCC, et donc il a intérêt à gérer aussi le code qui est dans le #ifdef __GNUC__. La plupart des compilateurs ne gèrent pas toutes les extensions GNU et donc ne définissent pas __GNUC__ non plus (ça ne leur apporterait de toute façon rien s'ils ne visent pas à compiler les sources écrites uniquement pour GCC).