複合ステートメントは、中括弧で囲まれたス
テートメントのシーケンスです。
GNU C では、括弧内の複合ステートメントは、ステートメント式 内の
ステートメントとして使用することができます。この構成は GNU C の直交拡張であり、現在のところ、IBM の
C++ でのみサポートされています。
.--------------. V | >>-(--{----statement--;-+--}--)--------------------------------><
ステートメント式の値は、構成全体の中で最後に発生する単純式の値です。 最後のステートメントが式でない場合、構成は void 型になり、値を持ちません。
このフィーチャーを typeof 演算子と組み合わせると、各オペランドが一度だけ評価される 関数に似た複雑なマクロを作成することができます。 次に例を示します。
#define SWAP(a,b) ( {__typeof__(a) temp; temp=a; a=b; b=temp;} )
関連参照