メインコンテンツ

AUTOSAR C++14 Rule M3-1-2

Functions shall not be declared at block scope.

説明

ルール定義

Functions shall not be declared at block scope.

根拠

すべての宣言は名前空間レベルに配置するのが適切な手法です。

また、ブロック スコープで関数を宣言すると、そのステートメントが関数宣言なのか、コンストラクターの呼び出しを伴うオブジェクト宣言なのかが明確にならないことがよくあります。

トラブルシューティング

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

すべて展開する

class A {
};

void b1() {
    void func(); //Noncompliant
    A a();   //Noncompliant
}

この例では、funca の宣言は b1 のブロック スコープ内にあります。

2 つ目の関数宣言は、aA 型のオブジェクトを返す関数なのか、a 自体が A 型のオブジェクトなのかが明確でないため、混乱を招く可能性があります。

チェック情報

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

バージョン履歴

R2019a で導入