MISRA C++:2008 Rule 7-3-1
The global namespace shall only contain main, namespace declarations and extern "C" declarations.
説明
ルール定義
The global namespace shall only contain main, namespace declarations and extern "C" declarations. 1
根拠
このルールは、グローバル スコープで見つかったすべての名前が 1 つの名前空間に属していることを確認します。このルールに従うことによって、名前の衝突が回避され、開発者が変数名を再利用することでコンパイル/リンク エラーが発生したり、変数名をシャドウすることで後で予期せぬ問題が発生したりすることを防ぐことができます。
Polyspace 実装
main 関数を除いて、チェッカーは、グローバル スコープで使用されている名前空間に属していないすべての名前にフラグを設定します。
名前が extern "C" ブロック (C++ コード内に含まれている C コード) で宣言されている場合、グローバル スコープでその名前にはフラグが設定されることはありません。ただし、オプション [リンク エラーを無視] (-no-extern-c) が使用されている場合は、これらの名前にもフラグが設定されます。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Declarations |
| カテゴリ: 必要 |
バージョン履歴
R2013b で導入
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.