ヘッダー ファイルの無名の名前空間
複数の定義につながる無名の名前空間がヘッダー ファイルに含まれる
説明
この欠陥は、ヘッダー ファイルで無名の名前空間が使用された場合に発生します。これは、名前空間内での複数のオブジェクト定義につながる可能性があります。
リスク
C++ 規格によると、無名の名前空間内の名前 (たとえば、次の aVar
) は、
namespace { int aVar; }
#include
しているソース ファイルをもつ各翻訳単位が、その名前空間内の自身のオブジェクト インスタンスを定義します。通常、オブジェクトを意図的に複数定義することはないため、メモリの過剰使用、単一定義ルールの違反など、予期しない結果を引き起こす可能性があります。修正方法
ヘッダー ファイルの名前空間に名前を指定するか、ヘッダー ファイルの名前空間を使わないようにします。
例
結果情報
グループ: プログラミング |
言語: C++ |
既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: UNNAMED_NAMESPACE_IN_HEADER |
影響度: Medium |
バージョン履歴
R2019b で導入