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

va_start 或 va_copy 应配合 va_end 使用

3.3.4 ID_incompleteVaMacros
目录 › next › previous

可变参数列表相关的 va_start 或 va_copy 和 va_end 应在同一函数中使用,否则会导致标准未定义的行为。

示例:

int foo(int n, ...) {
    va_list ap;
    va_start(ap, n);
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += va_arg(ap, int);
    }
    return sum;   // Non-compliant, missing ‘va_end(ap);’
}

应在函数返回前使用 va_end。

相关

ID_forbidVariadicFunction

依据

ISO/IEC 9899:1999 7.15.1.3(2)-undefined ISO/IEC 9899:2011 7.16.1.3(2)-undefined
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.