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

宏定义中的 # 和 ## 运算符不应嵌套使用

3.2.7 ID_macro_complexConcat
目录 › next › previous

# 和 ## 运算符的求值顺序在标准中是未声明的,不应嵌套使用。

示例:

#define M0(a, b) #a ## b          // Non-compliant
#define M1(a, b, c) a ## b ## c   // Non-compliant

#define M2(a) #a                  // Compliant
#define M3(a, b) M2(a ## b)       // Compliant

依据

ISO/IEC 9899:1999 6.10.3.2(2)-unspecified ISO/IEC 9899:1999 6.10.3.3(3)-unspecified ISO/IEC 9899:2011 6.10.3.2(2)-unspecified ISO/IEC 9899:2011 6.10.3.3(3)-unspecified ISO/IEC 14882:2003 16.3.2(2)-unspecified ISO/IEC 14882:2003 16.3.3(3)-unspecified ISO/IEC 14882:2011 16.3.2(2)-unspecified ISO/IEC 14882:2011 16.3.3(3)-unspecified ISO/IEC 14882:2017 19.3.2(2)-unspecified ISO/IEC 14882:2017 19.3.3(3)-unspecified

参考

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