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

宏的实参个数不可小于形参个数

3.3.2 ID_macro_insufficientArgs
目录 › next › previous

宏的实参个数小于形参个数是不符合 C/C++ 标准的,参数个数不一致必然意味着某种错误,然而在某些编译环境下却可以通过编译。

示例:

#define M(a, b, c)  a ## b ## c

const char* foo() {
    return M("x", "y");  // Non-compliant
}

早期标准(ISO 9899:1990)对这种情况没有明确定义,后续标准对其进行了约束,但 MSVC 等编译器至今仍不把这种问题视作编译错误,需要特别注意。

相关

ID_macro_redundantArgs

依据

ISO/IEC 9899:1999 6.10.3(4) ISO/IEC 9899:2011 6.10.3(4) ISO/IEC 14882:2003 16.3(4) ISO/IEC 14882:2011 16.3(4)

参考

CWE-628 MISRA C 2004 19.8
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.