我已经多次听到“运行时约束”一词。那时,我一直在实际标准ISO / IEC 9899:2018(C18)中寻找“运行时约束”一词,但我所发现的却很少:
来源:ISO / IEC 9899:2018(C18),第3.18节:
3.18
1运行时约束
调用库函数时对程序的要求。
我不明白,这句话应该表达什么。有什么要求?我比以前了解得少。
“需求”本身在这里没有任何描述。仅强调指出,在调用库函数时,引用的要求应是现存的,而不是该要求的确切含义。
“这里的“程序”到底是什么意思?
这意味着对可执行文件的要求是运行时约束如何应当调用库函数吗?但是为什么可执行文件要调用库函数呢?我的意思是可执行文件只是机器代码,需要执行。
提前感谢。
这是在运行时进行的对非法值或缺失值的检查-实际的约束检查取决于所调用的特定库函数。例如,
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);
运行时约束2streamptr
不能为空指针。
IOW,如果将NULL
传递为streamptr
,则表示运行时约束冲突,这将导致调用约束处理程序函数(您可以编写自己的约束处理程序函数)。如果可以帮助可视化它,则它是一种但不是真正的异常处理程序。
每个库函数定义了自己的要求,因此每个库函数都有自己的运行时约束检查。