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

不可取消定义具有保留意义的宏名称

3.2.3 ID_macro_undefReserved
目录 › next › previous

取消定义已有特殊用途的宏会导致标准未定义的行为,也会使代码陷入难以维护的境地。

标准库、编译环境中的宏不可被取消定义。

示例:

#undef __LINE__      // Non-compliant
#undef __cplusplus   // Non-compliant
#undef _WIN64        // Non-compliant
#undef NDEBUG        // Non-compliant

配置

keywordAsReserved: 是否将关键字作为保留名称 stdNameAsReserved: 是否将标准库中的名称作为保留名称 underscoreAsReserved: 是否将下划线开头的名称作为保留名称 reservedNames: 用户指定的保留名称

相关

ID_macro_defineReserved ID_reservedName

依据

ISO/IEC 9899:1999 7.1.3(3)-undefined ISO/IEC 9899:2011 7.1.3(3)-undefined ISO/IEC 14882:2003 16.8(3)-undefined ISO/IEC 14882:2011 16.8(4)-undefined

参考

MISRA C 2012 21.1 MISRA C++ 2008 17-0-1
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.