ISO / IEC 9899:1999
7.13.1.1setjmpマクロ
環境制限4setjmpマクロの呼び出しは、次のコンテキストのいずれかでのみ表示されます。—選択または反復ステートメントの制御式全体。—関係演算子または等式演算子の一方のオペランドと、もう一方のオペランドは整数定数式であり、結果の式は、選択ステートメントまたは反復ステートメントの制御式全体になります。—単項のオペランド!結果の式が選択ステートメントまたは反復ステートメントの制御式全体である演算子。または—式ステートメントの式全体(おそらくvoidにキャストされます)。
したがって、setjmpを使用する唯一のバリエーションは次のとおりです。
if (setjmp(buf))
while (setjmp(buf))
for (;; setjmp(buf))
if (setjmp(buf) == 0)
while (setjmp(buf) == 0)
for (;; setjmp(buf) == 0)
if (!setjmp(buf))
while (!setjmp(buf))
for (;; !setjmp(buf))
setjmp(buf);
(void)setjmp(buf);
そして、このステートメントを使用することはできません。
int foo = setjmp(buf);
foo = setjmp(buf);
右?反復ステートメントとはどういう意味ですか?forループの最後のステートメント?