|
|
1
93
证明 it:) 1.
[7.1.4]
这是一种笨拙的语言。一种解释是,列表中的项目对于所有库函数都是UB,除非被单个描述覆盖。但是列表以“例如”开头,表明它是说明性的,而不是详尽的。例如,它没有提及字符串的正确空终止(对于例如。
因此,很明显,7.1.4的意图/范围只是“无效值”导致UB( ). 我们必须查看每个函数的描述,以确定什么是“无效值”。
示例1-
[7.21.2.3]
示例2-
|
|
|
2
20
简短的回答
.使用
标准库函数的介绍指出,作为(标准库)函数参数的空指针被视为无效值,除非另有明确说明。
期望空指针作为有效参数的(标准库)函数示例:
它不仅在标准库简介中有详细说明,而且在这些功能的简介中也有详细说明:
这是故意的吗?
|
|
|
3
-1
C标准的作者没有努力详尽地列出实现必须满足的所有行为需求,以适合任何特定目的。相反,他们希望编写编译器的人能够运用一定的常识,无论标准是否需要。
如果对标准的合理解释意味着定义了一种行为,但一些编译器编写者扩展了解释以证明这样做是正确的,那么标准所说的真的重要吗? |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |