C and C++


BADMACRO.WCHAR_H : <wchar.h>の入出力マクロの使用

要旨

<wchar.h>で定義されている以下の入出力マクロを使用しています。
btowc(), fwprintf(), fwscanf(), iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), iswctype(), fgetwc(), fgetws(), fputwc(), fputws(), fwide(), getwc(), getwchar(), mbsinit(), mbrlen(), mbrtowc(), mbsrtowcs(), putwc(), putwchar(), swprintf(), swscanf(), towlower(), towupper(), ungetwc(), vfwprintf(), vwprintf(), vswprintf(), wcrtomb(), wcscat(), wcschr(), wcscmp(), wcscoll(), wcscpy(), wcscspn(), wcsftime(), wcslen(), wcsncat(), wcsncmp(), wcsncpy(), wcspbrk(), wcsrchr(), wcsrtombs(), wcsspn(), wcsstr(), wcstod(), wcstok(), wcstol(), wcstoul(), wcswcs(), wcswidth(), wcsxfrm(), wctob(), wctype(), wcwidth(), wmemchr(), wmemcmp(), wmemcpy(), wmemmove(), wmemset(), wprintf(), wscanf().

これらの関数は未規定、未定義、および処理系定義の動作と関連しています。

もしお使いのlibc実装がこれらを関数として定義する場合、その関数の使用はUse of <wchar.h> Input/Output ワーニングとして代わりに報告されます。

プロパティ

クラス名 Use of <wchar.h> Input/Output Macro
日本語クラス名 <wchar.h>の入出力マクロの使用
クラス分類 スタイル (style)
ニーモニック BADMACRO.WCHAR_H
カテゴリー
MisraC2023 MisraC2023:21.6 The Standard Library input/output functions shall not be used
Misra2012 Misra2012:21.6 The Standard Library input/output functions shall not be used
Misra2004 Misra2004:20.9 The input/output library <stdio.h> shall not be used in production code
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.
  AUTOSARC++14:M27-0-1 The stream input/output library <cstdio> shall not be used.
MisraC++2008 MisraC++2008:27-0-1 The stream input/output library <cstdio> shall not be used.
MisraC++2023 MisraC++2023:30.0.1 The C Library input/output functions shall not be used
CWE CWE:676 Use of Potentially Dangerous Function
  CWE:758 Reliance on Undefined, Unspecified, or Implementation-Defined Behavior
JSF++ JSF++:13 Multi-byte characters and wide string literals will not be used.
POW10 POW10:8 Limit the use of the preprocessor to file inclusion and simple macros.
JPL JPL:20 Make only very limited use of the C pre-processor.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Use of <wchar.h> Input/Output Macro"

#include <wchar.h>
#include <stdio.h>

int get_answer_w(FILE *f){
    wint_t ans;
    ans = fgetwc(f);     /* Warning issued here:
                          * - 'Use of <wchar.h> Input/Output Macro' if fgetwc() implemented as a macro
                          * - 'Use of <wchar.h> Input/Output' if fgetwc() implemented as a function
                          */
    if ((ans == (wint_t)('Y')) || ans == (wint_t)('y')){
        return 1;
    }
    return 0;
}

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

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

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