大抵のコンパイラは自身を識別する定義済マクロを用意していて、
(メジャー)バージョン番号がその値になっていることが多い。

gccなら
__GNUC__ と __GNUC_MINOR__ (それぞれ整数)。
__VERSION__ もある (こちらは文字列)。