Re[3]: препроцессор понимает тернарные выражения?
От: kov_serg Россия  
Дата: 04.11.21 09:25
Оценка:
Здравствуйте, 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


Так нагляднее?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.