什么是运行时约束?

RobertS支持Monica Cellio

我已经多次听说过“运行时约束”一词。我一直在实际标准ISO / IEC 9899:2018(C18)中寻找“运行时约束”一词,但发现的是:

资料来源:ISO / IEC 9899:2018(C18),第3.18节:

3.18

1运行时约束

调用库函数时对程序的要求。

我不明白,这句话应该表达什么。有什么要求?我了解得比以前少了。

这里没有以任何方式描述“需求”本身。仅强调指出,在调用库函数时,引用的要求应是现存的,而不是该要求的确切含义。

“程序”到底是什么意思?

这是否意味着对可执行文件的要求是运行时约束,即如何调用库函数?但是为什么可执行文件要调用库函数呢?我的观点是,可执行文件只是机器代码,需要执行。


  • 什么是C中的运行时约束?
约翰·波德

这是在运行时对非法或缺失值进行的检查-实际的约束检查取决于所调用的特定库函数。例如,

K.3.5.1.1 tmpfile_s函数

提要

1 #define _ _STDC_WANT_LIB_EXT1_ _ 1 #include <stdio.h> errno_t tmpfile_s(FILE * restrict * restrict streamptr);

运行时约束

2 streamptr 不能为空指针。

IOW,如果NULL传递,则streamptr是运行时约束冲突,这将导致调用约束处理函数(您可以编写自己的约束处理函数)。如果可以帮助可视化它,则它是一种但不是真正的异常处理程序。

每个库函数定义了自己的要求,因此每个库函数都有其自己的运行时约束检查。

编辑

正如乔纳森·莱夫勒(Jonathan Leffler)在评论中指出的那样,运行时约束仅适用于附件K中指定的边界检查库函数,并且这些库函数是可选的—并非每个实现都支持它们。实际上,C标准委员会的论文n1967指出,没有实现完全支持它们,并且C11和C18附件K中指定的功能可能会从C标准的未来版本中删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

为什么Kotlin集合的运行时类是Java类?

来自分类Dev

array.length的运行时是什么?

来自分类Dev

什么是运行时绑定?

来自分类Dev

为什么Java在运行时需要classpath

来自分类Dev

什么是“运行时上下文”?

来自分类Dev

如何在运行时更改标签约束?

来自分类Dev

为什么此代码给运行时分段错误?

来自分类Dev

在运行时添加通用约束?

来自分类Dev

运行时崩溃

来自分类Dev

为什么ClassCastException是运行时错误?

来自分类Dev

Gradle-“运行时”依赖项配置用于什么?

来自分类Dev

什么是C ++运行时概念?

来自分类Dev

什么时候抛出运行时异常?

来自分类Dev

在bash命令中运行时,分号会做什么?

来自分类Dev

Python的strip()的运行时是什么?

来自分类Dev

什么是运行时签名?

来自分类Dev

为什么我的程序运行时较长,而本应运行时较短?

来自分类Dev

为什么会出现运行时错误?

来自分类Dev

为什么Python运行时以这种方式处理警告?

来自分类Dev

为什么此异常不会导致运行时错误?

来自分类Dev

什么是flatpak运行时?

来自分类Dev

算法运行时

来自分类Dev

为什么要引入运行时?

来自分类Dev

在运行时添加通用约束?

来自分类Dev

快速更改运行时的约束

来自分类Dev

OpenMP运行时需要什么?

来自分类Dev

什么是客观的 c 运行时特性?

来自分类Dev

这段代码的运行时是什么

来自分类Dev

在插入 NEWID() ID 的运行时运行存储过程时出错 FOREIGN KEY 约束