C and C++


LANG.TYPE.MSUF : リテラル接尾語の欠如

要旨

符号なし整数定数に 'U' もしくは 'u' 接尾語が付加されていません。

定数の型は、その値とフォーマットおよびC90もしくはC99でコンパイルされたかどうかにより決定されます。

プロパティ

クラス名 Missing Literal Suffix
日本語クラス名 リテラル接尾語の欠如
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.MSUF
カテゴリー
MisraC2023 MisraC2023:7.2 A "u" or "U" suffix shall be applied to all integer constants that are represented in an unsigned type
Misra2012 Misra2012:7.2 A "u" or "U" suffix shall be applied to all integer constants that are represented in an unsigned type
Misra2004 Misra2004:10.6 A "U" suffix shall be applied to all constants of unsigned type
AUTOSARC++14 AUTOSARC++14:M2-13-3 A "U" suffix shall be applied to all octal or hexadecimal integer literals of unsigned type.
MisraC++2008 MisraC++2008:2-13-3 A "U" suffix shall be applied to all octal or hexadecimal integer literals of unsigned type.
MisraC++2023 MisraC++2023:5.13.4 Unsigned integer literals shall be appropriately suffixed
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Missing Literal Suffix"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

以下のコードはint型を32bitとしてコンパイルしたものとします。

unsigned int ui1 = 0xF;                          /* signed int */
unsigned int ui2 = 0xFFFFFFF;                    /* signed int */
unsigned int ui3 = 0xFFFFFFFFu;                  /* unsigned int with 'u' suffix */
unsigned int ui4 = 037777777777; /* 'Missing Literal Suffix' warning issued here */
unsigned int ui5 = 4294967295;   /* 'Missing Literal Suffix' warning issued here for C90 only (not C99) */

int fA(int i){return i;}

void fB(void){
  fA(0xF);                                       /* signed int */
  fA(0xFFFFFFFF);                /* 'Missing Literal Suffix' warning issued here */
}

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

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