C and C++


LANG.STRUCT.DECL.IF : 関数宣言の不整合

要旨

A function has multiple declarations, and the declarations differ in one or more of the following.

プロパティ

クラス名 Inconsistent Function Declarations
日本語クラス名 関数宣言の不整合
クラス分類 信頼性 (reliability)
ニーモニック LANG.STRUCT.DECL.IF
カテゴリー
MisraC2023 MisraC2023:8.3 All declarations of an object or function shall use the same names and type qualifiers
Misra2012 Misra2012:8.3 All declarations of an object or function shall use the same names and type qualifiers
Misra2004 Misra2004:8.3 For each function parameter the type given in the declaration and definition shall be identical, and the return types shall also be identical
  Misra2004:8.4 If objects or functions are declared more than once their types shall be compatible
  Misra2004:16.4 The identifiers used in the declaration and definition of a function shall be identical
AUTOSARC++14 AUTOSARC++14:M3-2-1 All declarations of an object or function shall have compatible types.
  AUTOSARC++14:M3-9-1 The types used for an object, a function return type, or a function parameter shall be token-for-token identical in all declarations and re-declarations.
  AUTOSARC++14:M8-4-2 The identifiers used for the parameters in a re-declaration of a function shall be identical to those in the declaration.
MisraC++2008 MisraC++2008:3-2-1 All declarations of an object or function shall have compatible types.
  MisraC++2008:3-9-1 The types used for an object, a function return type, or a function parameter shall be token-for-token identical in all declarations and re-declarations.
  MisraC++2008:8-4-2 The identifiers used for the parameters in a re-declaration of a function shall be identical to those in the declaration.
MisraC++2023 MisraC++2023:6.2.2 All declarations of a variable or function shall have the same type
  MisraC++2023:6.9.1 The same type aliases shall be used in all declarations and re- declarations of the same entity
  MisraC++2023:13.3.3 The parameters in all declarations or overrides of a function shall either be unnamed or have identical names
TS17961 TS17961:5.6-argcomp 5.6. Calling functions with incorrect arguments
  TS17961:5.13-funcdecl 5.13. Declaring the same function or object in incompatible ways
CERT-C CERT-C:DCL40-C Do not create incompatible declarations of the same function or object
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
INCREMENTAL_BUILD = No
WARNING_FILTER += allow class="Inconsistent Function Declarations"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

Suppose the project contains files LANG.STRUCT.DECL.IF.a.c and LANG.STRUCT.DECL.IF.b.c. They do not need to be in the same compilation unit.

/* LANG.STRUCT.DECL.IF.a.c */
        
int f_incons_pqual(int i);

int f_incons_ptype(int i);      /* 'Inconsistent Function Declarations' warning issued here
                                 * f_incons_ptype has declared types int(int) and int(intalias)
                                 * (even though int and intalias are underlyingly the same type) */

int f_incons_param(int x);     /* 'Inconsistent Function Declarations' warning issued here
                                * f_incons_param is declared with parameter names that are
                                * different, even though they're the same type. */

int f_cons(int i);
/* LANG.STRUCT.DECL.IF.b.c */

typedef int intalias;

int f_incons_ptype(intalias i);

int f_incons_pqual(const int i);/* 'Inconsistent Function Declarations' warning issued here
                                 * f_incons_pqual has declared types int(int) and int(const int) */

int f_incons_param(int y);     /* 'Inconsistent Function Declarations' warning issued here
                                * because the parameter f_incons_param has a different name
                                * in the other declaration */

int f_cons(int i);              /* consistent */

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

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