title: Conditional operator with a constant (true) value?
body: <p>I was looking at some preprocessor macros used in OpenSSL, and I came across the following from <code>crypto/stack/safestack.h</code>:</p>
  
  <pre><code>#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)))
  </code></pre>
  
  <p><strike>I'm guessing its written that way to work around a compiler bug (probably something ancient that hasn't been supported in over a decade by the vendor).</strike></p>
  
  <p>What is the purpose of using the <code>1</code> above since its always true?</p>