Warnung C6389

Verschieben Sie "Deklaration" in den anonymen Namespace, oder fügen Sie eine Forward-Deklaration in einen gemeinsamen Header ein, der in dieser Datei enthalten ist.

Hinweise

Diese Überprüfung soll dazu beitragen, die Sichtbarkeit bestimmter Symbole zu reduzieren und den Code modularisieren zu können. Bei C++-Projekten mit mehreren Dateien sollte jede Deklaration entweder lokal in einer C++-Datei (Teil des anonymen Namespaces) oder in einer gemeinsamen Headerdatei deklariert werden, die von mehreren C++-Dateien enthalten ist.

Wenn diese Überprüfung eine Deklaration kennzeichnet, sollte sie entweder in einen anonymen Namespace verschoben werden, oder eine Weiterleitungsdeklaration sollte in eine Headerdatei verschoben werden, je nach Bereich des Symbols.

Die Regel ist eine experimentelle Regel, die in einer Regelsatzdatei explizit aktiviert sein muss, damit sie funktioniert. Weitere Informationen zu Regelsätzen finden Sie unter Verwenden von Regelsätzen zum Gruppieren von Codeanalyseregeln.

Name der Codeanalyse: MARK_INTERNAL_OR_MISSING_COMMON_DECL

Beispiel

Im folgenden Beispiel wird C6389 generiert:

// A.h
struct X;

// A.cpp
#include "A.h"

// Not flagged, declared in a header file.
struct X { int x; };

struct Y { double y; }; // warning: Move 'Y' to anonymous namespace or put a forward declaration in a common header included in this file.

void f();  // warning: Move 'f' to anonymous namespace or put a forward declaration in a common header included in this file.

Eine Möglichkeit, diese Probleme zu beheben, besteht darin, in einen anonymen Namespace zu wechseln struct Y und die Deklaration f in einen Header zu verschieben:

// A.h
struct X;
void f();

// A.cpp
#include "A.h"

// Not flagged, declared in a header file.
struct X { int x; };

namespace {
  struct Y { double y; };
} // anonymous namespace

// Not flagged, declared in a header file.
void f();