メインコンテンツ

AUTOSAR C++14 Rule A3-3-1

Objects or functions with external linkage (including members of named namespaces) shall be declared in a header file

説明

ルール定義

外部リンクを含むオブジェクトまたは関数 (名前付き名前空間のメンバーを含む) は、ヘッダー ファイル内で宣言するものとします。

根拠

ヘッダー ファイルで関数やオブジェクトを宣言すると、その関数やオブジェクトに複数の翻訳単位からアクセスする意図があることが明確になります。関数やオブジェクトに単一の翻訳単位からアクセスすることを意図している場合、それを static として宣言するか、無名の名前空間で宣言します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

次の例では次の 2 つのファイルを使用しています。

  • decls.h:

    extern int x;
  • file.cpp:

    #include "decls.h"
    
    int x = 0;
    int y = 0; //Noncompliant
    static int z = 0;

この例のヘッダー ファイルでは、変数 x は宣言されていますが、変数 y は宣言されていません。変数 z もヘッダー ファイルでは宣言されていませんが、static 指定子を使用して宣言されており、外部リンクをもちません。

チェック情報

グループ: 基本概念
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入