标准定义的setjmp备注

2024-02-21

ISO/IEC 9899:1999

7.13.1.1 setjmp 宏

环境限制 4 应出现 setjmp 宏的调用 仅在以下情况之一: — 整个控制 选择或迭代语句的表达式; — a 的一个操作数 关系运算符或相等运算符,另一个操作数为整数 常量表达式,结果表达式是整个 控制选择或迭代语句的表达; - 这 一元操作数 !运算符,结果表达式为 选择或迭代语句的整个控制表达式; or — 表达式语句的整个表达式(可能强制转换 作废)。

因此,使用 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循环的最后一条语句?


不,你不能使用

int foo = setjmp(buf);
foo = setjmp(buf);

后者(赋值)的原因可能是赋值是一个表达式,它的左侧不仅仅是一个标识符。如果左侧是左值表达式,则标准不会强加子表达式的求值顺序。所以如果你有

int* f(void);
*f() = setjmp(buf);

*f() and setjmp(buf)可以按任何顺序进行评估。自从setjmp如果对抽象状态机的实际状态进行快照,则两个命令的语义将完全不同。

我认为,对于第一行(初始化),不会出现此问题。所以我想这可以添加为有效用途。但如果没有边界案例仍需要左侧评估,则必须仔细讨论。

(埃里克已经回复了选择声明。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标准定义的setjmp备注 的相关文章

  • SL4 AutoCompleteBox 重复筛选结果问题

    我在 AutoCompleteBox 过滤方面遇到问题 它似乎记住了之前的过滤器 例如 我输入 A 它会返回 1 项 我删除 A 并输入 Z 这应该返回 1 项 问题是它返回 A 过滤器加上 Z 的结果 我删除 Z 并输入 S 这会带回 2
  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • 为什么派生类不使用基类的operator=(赋值运算符)?

    以下是实际问题的简化版本 而不是打电话Base operator int 代码似乎生成了一个临时的Derived对象并复制它 既然函数签名似乎完美匹配 为什么不使用基本赋值运算符 这个简化的示例没有显示任何不良影响 但原始代码在析构函数中有
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • 在 GCC 和 Clang 下,使用 lambda 的简单 RAII 包装器的复制初始化意外失败

    我在创建一个简单的 RAII 包装器时遇到了一个意想不到的问题 更不用说下面代码的逻辑不完整性了 复制构造函数和赋值运算符未删除等 这意味着是一个SSCCE 令我印象深刻的是复制初始化我的包装器与临时 lambda 的结果会导致编译错误 而
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • 使用反射获取基类的受保护属性值

    I would like to know if it is possible to access the value of the ConfigurationId property which is located in the base
  • 导出到 CSV 时 Gridview 出现空行

    这个问题是由进一步讨论引发的这个问题 https stackoverflow com questions 6674555 export gridview data into csv file 6674589 noredirect 1 com
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url

随机推荐

  • aspx页面重定向到新页面

    将浏览器重定向到包含 ASPX 页面的新页面所需的代码是什么 我在我的页面 default aspx 上尝试过此操作 or 这些导致了未确定的服务器错误 我看不到错误代码 因为服务器不在我的控制范围内 错误也不公开 请提供从页面第一行到末尾
  • 从 UICollectionViewCell 传播自定义事件

    我有一个自定义的 UICollectionViewCell 里面有一个按钮 当我点击按钮时 会在该子类中触发一个事件 然后我想在 UICollectionView 本身上触发一个事件 我可以在视图控制器中处理该事件 伪代码 class My
  • 在 Visual Studio 中关闭 WCF 服务主机[重复]

    这个问题在这里已经有答案了 可能的重复 如何防止 Visual Studio 在调试中启动 Wcf SvcHost exe https stackoverflow com questions 283145 how to prevent vi
  • 按下/松开 WPF 按钮时触发事件

    我需要在按下 WPF 按钮 通过鼠标 键盘 触摸屏等 时触发一些事件 并在未按下 WPF 按钮时触发事件 这个怎么做 这应该很容易 但我找不到如何做到这一点 您可以从 Button 派生并覆盖按下时更改 http msdn microsof
  • 将 pandas dataframe 转换为内存中类似文件的对象?

    我每天都会将大约 2 250 万条记录加载到 Postgres 数据库中 然后 我使用 pd read sql 读取这些数据 将其转换为数据帧 然后进行一些列操作和一些小的合并 我将修改后的数据保存为单独的表以供其他人使用 当我执行 pd
  • 数据库查询表示模拟 Windows 共享上的文件?

    有没有办法让某些东西看起来就像 Windows 文件共享上的文件 但实际上是通过 HTTP 提供的资源 对于上下文 我正在使用一个只能处理 Windows 文件共享上的文件的旧应用程序 我想创建一个简单的基于 HTTP 的服务来动态地提供文
  • 为什么我无法在 Angular 2 组件中加载谷歌地图?

    这是我的 ts 组件 import Component OnInit Output EventEmitter from angular core declare var google any Component selector app r
  • Chrome webtools 调试器自行恢复脚本执行

    我在 Chrome 开发工具中看到了奇怪的行为 我在 JavaScript 中设置了一个断点 然后断点命中并停止执行 代码窗口显示了我的代码中的断点所在的点 该窗口具有淡黄色背景颜色 然后 5 秒后执行自动神奇地恢复 而无需我告诉它 以前有
  • Angular 2 - 什么相当于 Root Scope?

    全部 我有这个组件 当我单击 href 时 如果它是 Angular 1 则应该将变量设置为根范围 如下所示 selector my component template div constructor this addTag functi
  • 在C中将十进制转换为二进制

    我正在尝试将十进制转换为二进制 例如 192 到 11000000 我只需要一些简单的代码来执行此操作 但到目前为止我的代码不起作用 void dectobin int value char output int i output 5 0
  • Angular同步http循环更新进度条

    我正在尝试使用 foreach 内的顺序 http 请求来更新进度条 这可行 但它在完成时不同步 进度条正在通过 http 调用同步 我做错了什么 angular forEach queue function item if item ui
  • F#:实现函数名与关键字begin相同的接口

    我正在尝试实现 IVector 接口 它是 Microsoft VisualC StlClr 命名空间的一部分 它有一个成员函数begin 如果我尝试实现该接口 那么它会抱怨 对象表达式中出现意外的关键字 开始 这是因为 begin 是一个
  • glibc中的CSU代表什么?

    我正在读一本article http dbp consulting com tutorials debugging linuxProgramStartup html在C启动时 它指的是函数 libc csu init 谁能告诉我 CSU 代
  • 在打字稿中应该定义什么类型的超时

    我正在尝试在打字稿中编写一个去抖函数 但不确定要设置分配给什么类型的变量setTimeout 我的代码如下所示 function debounced func gt void wait number what type should tim
  • Ajax 操作 URL 不起作用 + Symfony2

    我想使用 jquery 自动完成功能进行 ajax 调用 如下所示 register player team autocomplete source function request response ajax url path volle
  • VIM:全局匹配行,删除此行和以下2行

    以下是我的想法 g All Claims t 0 3d 但这不起作用 在这种模式下乘以一个动作似乎是无效的语法 我最终得到了以下序列 qq All Claims t 0 3dd q 10000 q 这种宏观组合效果很好 我只是好奇是否有一些
  • Webpack:将 html 部分包含在另一个部分中?

    有没有办法使用 webpack 将 html 部分包含在另一个部分中 我正在使用 html loader 来执行此操作 索引 html 但是当我尝试在 header html 中包含另一个部分时 它无法渲染它 这是行不通的 header h
  • 在 GEdit 中创建您自己的语法突出显示?

    如何将 关键字 添加到 GEdit 关键字列表中 我基本上想让 printf 函数看起来像一个关键字 printf Hello World n GEdit 使用Gtk源视图 http projects gnome org gtksource
  • 基于 XMPP 协议的 Google Cloud Messaging(使用 PHP 和 XMPPHP 的服务器)。它是如何工作的?

    也许你已经听说过它 它是在一个月前的 Google IO 上宣布的 Google Cloud Messaging 仅位于下游 服务器 gt 电话 但现在通过增强的 CCS 云连接服务器 您可以通过持久 TCP 连接向上游发送消息 这要归功于
  • 标准定义的setjmp备注

    ISO IEC 9899 1999 7 13 1 1 setjmp 宏 环境限制 4 应出现 setjmp 宏的调用 仅在以下情况之一 整个控制 选择或迭代语句的表达式 a 的一个操作数 关系运算符或相等运算符 另一个操作数为整数 常量表达