szukałem w niektórych makr preprocesora użytych w OpenSSL, i natknąłem się na następujący od crypto/stack/safestack.h
:Operator warunkowy o stałej (prawdziwej) wartości?
#define CHECKED_STACK_OF(type, p) \
((_STACK*) (1 ? p : (STACK_OF(type)*)0))
#define CHECKED_SK_FREE_FUNC(type, p) \
((void (*)(void *)) ((1 ? p : (void (*)(type *))0)))
#define CHECKED_SK_FREE_FUNC2(type, p) \
((void (*)(void *)) ((1 ? p : (void (*)(type))0)))
Zgaduję jego napisany w taki sposób, aby obejść błędu kompilatora (prawdopodobnie coś starożytnego że Hasn od dziesięciolecia był wspierany przez sprzedawcę).
Jaki jest cel używania powyższego 1
, ponieważ jest zawsze prawdziwy?
Weryfikacja typu 'p', prawdopodobnie - drugiego i trzeciego argumentu operatora warunkowego musi być możliwa do zamiany na ten sam typ. –