Kevin Kofler (./6) :
__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).
This is our mistake. Originally __GNUC__ meant that this was the GNU C
compiler (aka GNU Compiler Collection). However, we have added so many
extensions to the compiler that it later came to mean that this is the GNU
C language. There is unfortunately no way to distinguish between a
program written in GNU C, and a program intended to be compiled by the GNU
C compiler. All compilers that implement the GNU C language must define
__GNUC__. There is no way around this. The use of __GNUC__ is so
pervasive in GNU/Linux that a compiler has to define it or else it simply
won't work. This is why the Intel compilers and other compilers define it.
They have no choice.
Source:
http://www.nabble.com/Re:-Feature-request---a-macro-defined-for-GCC-p18227762.html squalyl (./5) :
(l'autre compilo c'est ADS je sais pas si c'est connu.)
Comme j'ai dit, il est peu probable qu'il supporte le GNU C langaga, donc __GNUC__ est très bien. C'était juste une clarification d'une erreur courante.