add __GNUC__