Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In den Artikeln in diesem Abschnitt der Dokumentation wird eine Teilmenge der vom Compiler generierten Fehlermeldungen erläutert.
Wichtig
Die Visual Studio-Compiler und -Buildtools können vielen Arten von Fehlern und Warnungen generieren. Nachdem ein Fehler oder eine Warnung erkannt wurde, können die Buildtools Annahmen über den beabsichtigten Zweck des Codes machen, und sie versuchen, den Code weiterhin auszuführen, sodass mehrere Probleme gleichzeitig gemeldet werden können. Wenn die Tools allerdings von falschen Annahmen ausgehen, sind spätere Fehler oder Warnungen möglicherweise nicht auf das Projekt anwendbar. Wenn Sie Probleme im Projekt beheben, sollten Sie immer mit dem ersten gemeldeten Problem (Fehler oder Warnung) beginnen, und häufig einen Rebuild für das Projekt ausführen. Durch eine Fehlerbehebung können möglicherweise viele nachfolgende Fehler behoben werden.
Um Hilfe zu einer bestimmten Diagnosenachricht in Visual Studio zu erhalten, wählen Sie sie im Fenster Ausgabe aus, und drücken Sie die Taste F1. Visual Studio öffnet die Dokumentationsseite für diesen Fehler, sofern vorhanden. Sie können auch das Suchtool oben auf der Seite verwenden, um Artikel zu bestimmten Fehlern oder Warnungen zu finden. Oder durchsuchen Sie die Liste der Fehler und Warnungen nach Tool und Typ im Inhaltsverzeichnis auf dieser Seite.
Hinweis
Nicht jeder Visual Studio-Fehler oder jede Warnung ist dokumentiert. In vielen Fällen sind bereits alle verfügbaren Informationen in der Fehlermeldung enthalten. Wenn Sie diese Seite erreicht haben, nachdem Sie F1 gedrückt haben, und der Ansicht sind, dass die Fehlermeldung oder Warnmeldung zusätzliche Erläuterungen benötigt, teilen Sie uns dies mit. Mithilfe der Feedbackschaltflächen auf dieser Seite können Sie ein Dokumentationsproblem auf GitHub melden. Wenn Sie glauben, dass der Fehler oder die Warnung falsch ist oder Sie ein weiteres Problem mit dem Toolset gefunden haben, melden Sie ein Produktproblem auf der Developer Community-Website. Sie können auch innerhalb der IDE Feedback senden und Fehler eingeben. Wechseln Sie in Visual Studio zur Menüleiste, und wählen Sie Hilfe > Feedback senden > Ein Problem melden aus, oder senden Sie einen Vorschlag über Hilfe > Feedback senden > Vorschlag senden. Es wurden einige Themen zu Compilerfehlern erstellt, die nicht vom Compiler ausgegeben werden und Sie jetzt stattdessen zu dieser Seite umleiten.
In Microsoft Learn Q&A-Foren finden Sie möglicherweise zusätzliche Unterstützung für Fehler und Warnungen. Oder suchen Sie auf der Website der Visual Studio C++-Developer Community nach der Fehler- oder Warnungsnummer. Sie können auch Stack Overflow nach Lösungen durchsuchen.
Links zu zusätzlichen Hilfe- und Communityressourcen finden Sie in der Hilfe und Community für Visual C++.
Fehlermeldungen
Fehler | `Message` |
---|---|
Compilerfehler C3000 | „symbol“: Für die Verwendung einer Klassenvorlage ist eine Vorlagenargumentliste erforderlich. Die Argumentherleitung ist in einem nicht statischen Datenmember nicht zulässig. |
Compilerfehler C3001 | „message“: Es wurde ein OpenMP-Direktivenname erwartet |
Compilerfehler C3002 | 'name1 name2' :Mehrere OpenMP-Direktivennamen |
Compilerfehler C3003 | „directive“: Ein OpenMP-Direktivenname ist nach Direktivenklauseln nicht zulässig |
Compilerfehler C3004 | „clause“: Die Klausel ist für die „directive“-Direktive von OpenMP nicht gültig |
Compilerfehler C3005 | „message“: Für die „directive“-Direktive von OpenMP wurde ein unerwartetes Token gefunden |
Compilerfehler C3006 | „clause“: In der Klausel für die „directive“-Direktive von OpenMP fehlt ein erwartetes Argument |
Compilerfehler C3007 | „clause“: Die Klausel für die „directive“-Direktive von OpenMP akzeptiert kein Argument |
Compilerfehler C3008 | „argument“: Im Argument der „directive“-Direktive von OpenMP fehlt eine schließende Klammer „)“. |
Compilerfehler C3009 | „label“: Der Sprung in einen strukturierten Block von OpenMP ist nicht zulässig |
Compilerfehler C3010 | „label“: Der Sprung aus einem strukturiertem Block von OpenMP ist nicht zulässig |
Compilerfehler C3011 | Eine Inlineassembly direkt innerhalb eines parallelen Bereichs ist nicht zulässig. |
Compilerfehler C3012 | „function“: Eine systeminterne Funktion ist direkt innerhalb eines parallelen Bereichs nicht zulässig |
Compilerfehler C3013 | „clause“: Die Klausel darf nur einmal in der „directive“-Direktive von OpenMP vorkommen |
Compilerfehler C3014 | Es wurde erwartet, dass auf die „directive“-Direktive von OpenMP eine „For“-Schleife folgt |
Compilerfehler C3015 | Die Initialisierung in der For-Anweisung von OpenMP weist eine ungültige Form auf. |
Compilerfehler C3016 | „identifier“: Die Indexvariable in der „For“-Anweisung von OpenMP muss einen ganzzahligen Typ mit Vorzeichen aufweisen |
Compilerfehler C3017 | Der Beendigungstest in der For-Anweisung von OpenMP weist eine ungültige Form auf. |
Compilerfehler C3018 | „identifier“: Der Test oder das Inkrement in der „For“-Anweisung von OpenMP muss die Indexvariable „variable“ verwenden |
Compilerfehler C3019 | Das Inkrement in der „For“-Anweisung von OpenMP weist eine ungültige Form auf |
Compilerfehler C3020 | „variable“: Die Indexvariable der „For“-Schleife von OpenMP kann nicht im Schleifentext geändert werden |
Compilerfehler C3021 | „argument“: Das Argument der „directive“-Direktive von OpenMP ist leer |
Compilerfehler C3022 | „directive“: Ungültiger Plantyp von „directive“ für die „directive“-Direktive von OpenMP |
Compilerfehler C3023 | „argument“: Im Argument für die „directive“-Klausel von OpenMP wurde ein unerwartetes Token gefunden |
Compilerfehler C3024 | „schedule(runtime)“: Der chunk_size-Ausdruck ist nicht zulässig |
Compilerfehler C3025 | „clause“: Es wurde ein ganzzahliger Ausdruck erwartet |
Compilerfehler C3026 | „clause“: Der konstante Ausdruck muss positiv sein |
Compilerfehler C3027 | „clause“: Es wurde ein arithmetischer Ausdruck oder Zeigerausdruck erwartet |
Compilerfehler C3028 | „member“: Nur eine Variable oder ein statischer Datenmember kann in einer Datenfreigabeklausel verwendet werden |
Compilerfehler C3029 | „symbol“: Darf nur einmal in Datenfreigabeklauseln in einer OpenMP-Direktive vorkommen |
Compilerfehler C3030 | „identifier“: Die Variable in der „directive“-Klausel/-Direktive darf keinen Verweistyp aufweisen |
Compilerfehler C3031 | „identifier“: Die Variable in der „reduction“-Klausel muss einen arithmetischen Skalartyp aufweisen |
Compilerfehler C3032 | „identifier“: Die Variable in der „clause“-Klausel darf keinen unvollständigen Typ „type“ aufweisen |
Compilerfehler C3033 | „identifier“: Die Variable in der „clause“-Klausel darf keinen durch eine Konstante qualifizierten Typ aufweisen |
Compilerfehler C3034 | Die „directive“-Direktive von OpenMP kann nicht direkt in der „directive“-Direktive geschachtelt werden |
Compilerfehler C3035 | Die ordered-Direktive von OpenMP muss mit der ordered-Klausel direkt an eine For-Direktive oder eine Parallel For-Direktive gebunden werden. |
Compilerfehler C3036 | „clause“: Ungültiges Operatortoken in der „reduction“-Klausel von OpenMP |
Compilerfehler C3037 | „identifier“: Die Variable in der „clause“-Klausel muss im umschließenden Kontext freigegeben sein |
Compilerfehler C3038 | „identifier“: Die Variable in der „private“-Klausel kann im umschließenden Kontext keine reduction-Variable sein |
Compilerfehler C3039 | „identifier“: Die Indexvariable in der „For“-Anweisung von OpenMP kann keine „reduction“-Variable sein |
Compilerfehler C3040 | „identifier“: Der Typ der Variable in der „reduction“-Klausel ist nicht kompatibel mit dem „reduction“-Operator „operator“ |
Compilerfehler C3041 | „identifier“: Die Variable in der „copyprivate“-Klausel muss im umschließenden Kontext privat sein |
Compilerfehler C3042 | „copyprivate“- und „nowait“-Klauseln dürfen nicht zusammen in der „directive“-Direktive von OpenMP angezeigt werden |
Compilerfehler C3043 | Die critical-Direktive von OpenMP kann nicht in einer critical-Direktive mit dem gleichen Namen geschachtelt werden. |
Compilerfehler C3044 | „section“: Nur bei direkter Schachtelung unter einer „sections“-Direktive von OpenMP zulässig |
Compilerfehler C3045 | Es wurde erwartet, dass auf die sections-Direktive von OpenMP eine Verbundanweisung folgt. '{' fehlt |
Compilerfehler C3046 | Fehlender strukturierter Block in einem #pragma omp sections-Bereich von OpenMP. |
Compilerfehler C3047 | Vor einem strukturierten Block in einem „sections“-Bereich von OpenMP muss „#pragma omp section“ stehen (Veraltet in Visual Studio 2022.) |
Compilerfehler C3048 | Der Ausdruck, der auf "#pragma omp atomic" folgt, weist eine ungültige Form auf. |
Compilerfehler C3049 | „argument“: Ungültiges Argument in der „default“-Klausel von OpenMP |
Compilerfehler C3050 | „class“: Eine Verweisklasse kann nicht von „identifier“ erben |
Compilerfehler C3051 | Veraltet. |
Compilerfehler C3052 | „identifier“: Die Variable wird in einer Datenfreigabeklausel nicht unter einer „default(none)“-Klausel angezeigt |
Compilerfehler C3053 | „identifier“: „threadprivate“ ist nur für globale oder statische Datenelemente gültig |
Compilerfehler C3054 | „#pragma omp parallel“ wird in einer generischen Klasse oder Funktion derzeit nicht unterstützt (Veraltet in Visual Studio 2022.) |
Compilerfehler C3055 | „identifier“: Auf das Symbol kann erst verwiesen werden, wenn es in der „threadprivate“-Direktive verwendet wird |
Compilerfehler C3056 | „identifier“: Das Symbol befindet sich nicht im gleichen Gültigkeitsbereich wie die „threadprivate“-Direktive |
Compilerfehler C3057 | „identifier“: Die dynamische Initialisierung von „threadprivate“-Symbolen wird derzeit nicht unterstützt |
Compilerfehler C3058 | „identifier“: Das Symbol kann erst als „threadprivate“ deklariert werden, wenn es in der „copyin“-Klausel verwendet wird |
Compilerfehler C3059 | „identifier“: Ein „threadprivate“-Symbol kann nicht in der „clause“-Klausel verwendet werden |
Compilerfehler C3060 | „identifier“: Eine friend-Funktion kann nicht mithilfe eines qualifizierten Namens innerhalb einer Klasse definiert werden (sie kann nur deklariert werden) |
Compilerfehler C3061 | Der Operator „operator“: Ist in der „type“-Enumeration mit zugrunde liegendem Typ „type“ nicht zulässig |
Compilerfehler C3062 | „identifier“: Für den Enumerator ist ein Wert erforderlich, da der zugrunde liegende Typ „type“ ist |
Compilerfehler C3063 | Operator „operator“: Alle Operanden müssen den gleichen Enumerationstyp aufweisen |
Compilerfehler C3064 | „identifier“: Muss ein einfacher Typ sein oder in einen einfachen Typ aufgelöst werden |
Compilerfehler C3065 | Die Eigenschaftendeklaration im Nichtklassenbereich ist nicht zulässig. |
Compilerfehler C3066 | Es gibt mehrere Möglichkeiten, um ein Objekt dieses Typs mit diesen Argumenten aufzurufen |
Compilerfehler C3067 | Eine Initialisiererliste kann nicht mit dem integrierten []-Operator verwendet werden |
Compilerfehler C3068 | „identifier“: Eine „naked“-Funktion kann keine Objekte enthalten, für die eine Entladung erforderlich wäre, wenn eine C++-Ausnahme auftritt |
Compilerfehler C3069 | Der Operator „operator“: Ist für den Enumerationstyp nicht zulässig |
Compilerfehler C3070 | „identifier“: Die Eigenschaft hat keine „set“-Methode |
Compilerfehler C3071 | Der Operator „operator“ kann nur auf eine Instanz einer Verweisklasse oder auf einen Werttyp angewendet werden |
Compilerfehler C3072 | Der Operator „operator“ kann nicht auf eine Instanz einer Verweisklasse angewendet werden; verwenden Sie den unären „%“-Operator, um eine Instanz einer Verweisklasse in einen Handletyp zu konvertieren |
Compilerfehler C3073 | „identifier“: Die Verweisklasse hat keinen benutzerdefinierten Kopierkonstruktor |
Compilerfehler C3074 | Ein Array kann nicht mit einem in Klammern gesetzten Initialisierer initialisiert werden |
Compilerfehler C3075 | „identifier“: Eine Instanz eines Verweistyps „type“ kann nicht in einen Werttyp eingebettet werden |
Compilerfehler C3076 | „identifier“: Eine Instanz eines Verweistyps „type“ kann nicht in einen nativen Typ eingebettet werden |
Compilerfehler C3077 | „identifier“: Ein Finalizer kann nur ein Member eines Verweistyps sein |
Compilerfehler C3078 | Die Arraygröße muss in neuen Ausdrücken angegeben werden |
Compilerfehler C3079 | Eine Initialisiererliste kann nicht als rechter Operand dieses Zuweisungsoperators verwendet werden |
Compilerfehler C3080 | „finalizer“: Ein Finalizer darf keinen Speicherklassenspezifizierer aufweisen |
Compilerfehler C3081 | Veraltet. |
Compilerfehler C3082 | Veraltet. |
Compilerfehler C3083 | „identifier“: Das Symbol links von „::“ muss ein Typ sein |
Compilerfehler C3084 | „identifier“: Ein Destruktor/Finalizer darf nicht „keyword“ sein |
Compilerfehler C3085 | „identifier“: Ein Konstruktor darf nicht „keyword“ sein |
Compilerfehler C3086 | „std::initializer_list“ kann nicht gefunden werden: Sie müssen #include <initializer_list> verwenden |
Compilerfehler C3087 | „identifier“: Der Aufruf von „declaration“ initialisiert diesen Member bereits |
Compilerfehler C3088 | „class“: Der Attributkonstruktor muss benannte formale Argumente aufweisen |
Compilerfehler C3089 | „identifier“: Der Parametername stimmt nicht mit dem Namen eines Datenmembers überein |
Compilerfehler C3090 | „class“: Die Attributklasse darf keine Vorlage sein |
Compilerfehler C3091 | „class“: Die Attributklasse darf keine Basisklasse aufweisen |
Compilerfehler C3092 | „class“: Der Attributklassenmember darf kein Bitfeld und nicht „static“ oder „const“ sein |
Compilerfehler C3093 | „type“: Der Typ ist für den Attributklassenmember „member“ nicht zulässig |
Compilerfehler C3094 | „attribute“: Eine anonyme Verwendung ist nicht zulässig |
Compilerfehler C3095 | „attribute“: Das Attribut kann nicht wiederholt werden |
Compilerfehler C3096 | „attribute“: Das Attribut ist nur für Datenmember von Attributklassen zulässig |
Compilerfehler C3097 | „attribute“: Der Gültigkeitsbereich des Attributs muss mit „assembly:“ oder „module:“ festgelegt werden |
Compilerfehler C3098 | „identifier“: Das Attribut besitzt keine benutzerdefinierten Konstruktoren |
Compilerfehler C3099 | „keyword“: Verwenden Sie [System::AttributeUsageAttribute]/[Windows::Foundation::Metadata::AttributeUsageAttribute] für verwaltete Attribute/WinRT-Attribute |
Weitere Informationen
C/C++-Compiler und -Buildtools: Fehler und Warnungen
Compilerfehler C2000 bis C3999, C7000 bis C7999