C and C++


BADMACRO.STDARG_H : <stdarg.h>機能の使用

要旨

<stdarg.h>から以下のマクロの一つを使用しています。
va_arg(), va_start(), va_end(), va_copy().

プロパティ

クラス名 Use of <stdarg.h> Feature
日本語クラス名 <stdarg.h>機能の使用
クラス分類 信頼性 (reliability)
ニーモニック BADMACRO.STDARG_H
カテゴリー
MisraC2023 MisraC2023:17.1 The standard header file <stdarg.h> shall not be used
Misra2012 Misra2012:17.1 The standard header file <stdarg.h> shall not be used
AUTOSARC++14 AUTOSARC++14:A1-1-1 All code shall conform to ISO/IEC 14882:2014 - Programming Language C++ and shall not use deprecated features.
MisraC++2023 MisraC++2023:4.1.2 Deprecated features should not be used
  MisraC++2023:21.10.1 The features of <cstdarg> shall not be used
CERT-C CERT-C:EXP47-C Do not call va_arg with an argument of the incorrect type
  CERT-C:MSC38-C Do not treat a predefined identifier as an object if it might only be implemented as a macro
  CERT-C:MSC39-C Do not call va_arg() on a va_list that has an indeterminate value
CERT-CPP CERT-CPP:EXP58-CPP Pass an object of the correct type to va_start
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Use of <stdarg.h> Feature"

#include <stdarg.h>

int var_add ( int numargs, ... ){    
    int retval=0;
    int i;
    va_list args;                        /* 'Use of <stdarg.h> Feature' warning issued here */
    
    va_start(args, numargs);             /* 'Use of <stdarg.h> Feature' warning issued here */
    for (i = 0; i < numargs; i++){
        retval += va_arg(args, int);     /* 'Use of <stdarg.h> Feature' warning issued here */
    }
    va_end(args);                        /* 'Use of <stdarg.h> Feature' warning issued here */
    return retval;
}

関連のある設定ファイルパラメータ

このクラスは一般テンプレート設定ファイルで BAD_MACRO_* ルールセットによって実装されています。

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。