Здравствуйте, niXman, Вы писали:
X>наткнулся на такое: X>
# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
X>обратите внимание на первую строку приведенного кода. X>я единственный такой кто впервые видит чтоб препроцессор понимат тернарки?
Вы просто не стой стороны посмотрели
#if выражения понимает
X>только я тут вижу тернарку?
там написано если компилятор C++ то порерить что gnuc 2.6 или выше, а если C то мпроверить что gnuc 2.4 или выше
для C надо gnuc 2.4+, для C++ 2.6+ если это выполняется то заходим внутрь ифа.
/* 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
Здравствуйте, niXman, Вы писали:
X>привет!
X>обратите внимание на первую строку приведенного кода. X>я единственный такой кто впервые видит чтоб препроцессор понимат тернарки?
Поддерживаю, за много лет опыта ни разу не понадобилось Стандарт не против: