【发布时间】:2011-10-28 23:32:25
【问题描述】:
标题说明了一切。在包含 <csetjmp> 之后,longjmp 和 jmp_buf 位于 std 命名空间中,但 setjmp 不在。我在 MinGW4.5 和 MSVC10 上验证了这一点。在查看 <csetjmp> 标头后,我无法弄清楚这个选择的原因。我一直假设每个<cheader> 文件都将<header.h> 包装在std 命名空间中。
我错了吗? setjmp 特例背后的基本原理是什么?请赐教!
注意:我知道在 C++ 中滥用 setjmp/longjmp 的问题。
【问题讨论】:
-
sigsetjmp()是否可以作为首选替代品? -
不,在包含
之后,我在 std 命名空间内外都没有可用的 sigsetjmp。 -
希望禁用它。但是不,宏没有命名空间范围。