Здравствуйте, niXman, Вы писали:
X>а так лучше видно?
# if 1 ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
X>только я тут вижу тернарку?
там написано если компилятор C++ то порерить что gnuc 2.6 или выше, а если C то мпроверить что gnuc 2.4 или выше
для C надо gnuc 2.4+, для C++ 2.6+ если это выполняется то заходим внутрь ифа.
#if expression
expression = exp1 ? exp2 : exp3
exp1 = defined MACROS
MACROS = __cplusplus
exp2 = __GNUC_PREREQ (2, 6)
exp3 = __GNUC_PREREQ (2, 4)
/* Convenience macro to test the version of gcc.
Use like this:
#if __GNUC_PREREQ (2,8)
... code requiring gcc 2.8 or later ...
#endif
Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
added in 2.0. */
#if defined __GNUC__ && defined __GNUC_MINOR__
# define __GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
#else
# define __GNUC_PREREQ(maj, min) 0
#endif
Так нагляднее?