http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57665
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
1) You didn't attach a testcase
2) GCC 4.3 is unsupported and unmaintained
3) You have the wrong number of underscores:
#define GCC_VERSION #__GNUC__ "." #___GNUC_MINOR__ "." #__GNUC_PATCHLEVEL
^^^ ^^
4) why are you expecting __GNUC__ to behave differently to this?
#define GNUC 4
#define GNUC_MINOR 3
#define GNUC_PATCHLEVEL 4
#define GCC_VERSION #GNUC "." #GNUC_MINOR "." #GNUC_PATCHLEVEL
const char* ver = GCC_VERSION;
That's not how the preprocessor works.