私はこのようなものを見ています:
#define foo(x) \
(((a > b) ? \
0 : 1), \
(c ? 2 : 3), \
(d ? 4 : 5))
これをどう解釈していいのかわからない。誰かが私を助けることができますか?
私はこのようなものを見ています:
#define foo(x) \
(((a > b) ? \
0 : 1), \
(c ? 2 : 3), \
(d ? 4 : 5))
これをどう解釈していいのかわからない。誰かが私を助けることができますか?
基本的に\
、ステートメントの終了に関する限り改行は無視される#define
ため、コードを記述するたびに改行foo(var)
が置き換えられます
((((a > b) ?
0 : 1),
(c ? 2 : 3),
(d ? 4 : 5))
コンマ演算子は、コンマ演算子で区切られたステートメントで構成されるステートメントの最終的な「返される」値が最も右側の値であることを除いて、多くのことを行いません。
これらすべてが説明されてい#define
ますa
がb
、これは実際にはそれほど有効ではありません.c
d
#define
x
コンマ演算子は、すべてのオペランドを評価し、最後のオペランドの値を返します。したがって、a
、b
、c
およびd
が評価され、 がゼロでないf(x)
かどうかに応じて、 の結果は 4 または 5 になります。d