ISO/IEC 9899:1999
7.13.1.1 setjmp 宏
环境限制 4 setjmp 宏的调用应仅出现在以下上下文之一中: — 选择或迭代语句的整个控制表达式;— 关系或相等运算符的一个操作数与另一个操作数为整数常量表达式,结果表达式是选择或迭代语句的整个控制表达式;— 一元的操作数!运算符,其结果表达式是选择或迭代语句的整个控制表达式;或 — 表达式语句的整个表达式(可能强制转换为 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 循环的最后一条语句?