☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

不应依赖未声明的行为

1.16 ID_unspecifiedBehavior
目录 › next › previous

语言标准允许程序的某些行为可由编译器自行定义,且无需提供文档说明,这种行为称为未声明的行为(unspecified behavior),具有不确定性,也会降低可移植性,故不应使程序依赖未声明的行为。

对未声明行为的介绍和约束是本规则集合的重要内容,将在后续章节中深入讨论。

示例:

const char* p = "ABC";
const char* q = "ABC";

assert(p == q);   // Unspecified behavior

相同字符串常量的地址是否相同是未声明的,例中的断言可能会失效,而且要注意,未声明的行为即使在同一编译器的不同版本之间也可能会有差异。

相关

ID_undefinedBehavior ID_implementationDefinedFunction

依据

ISO/IEC 9899:2011 3.4.4 ISO/IEC 9899:2011 J.1 ISO/IEC 14882:2011 1.3.25

参考

CWE-758
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.