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

避免宏被取消定义

3.2.13 ID_macro_undef
目录 › next › previous

宏不受作用域限制,不应被取消定义,否则会失去确定性,使代码难以维护。

示例:

// In a.h
#define M 1

// In b.h
#undef M      // Non-compliant
#define M 0   // Redefined, bad

在一个文件中定义了宏 M,在另一个文件取消并重定义了 M,使同一个全局名称产生两种不同的意义,严重降低了可维护性。

有时取消定义已使用完毕的内部宏可避免对外部产生不良影响,具有一定积极作用,但宏的定义和取消应在同一文件的同一作用域中完成,相关示例可参见 ID_macro_inBlock。

配置

allowUndefMacroInSameBlock: 是否允许取消在同一作用域内定义的宏

相关

ID_macro_undefReserved ID_macro_inBlock

参考

MISRA C 2004 19.6 MISRA C 2012 20.5 MISRA C++ 2008 16-0-3
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.