Teilen über


Compilerfehler C3409

Ein leerer Attributblock ist nicht zulässig

Hinweise

Die eckigen Klammern wurden vom Compiler als Attributblock interpretiert, aber es wurden keine Attribute gefunden.

Der Compiler generiert diesen Fehler möglicherweise, wenn Sie eckige Klammern als Teil der Definition eines Lambda-Ausdrucks verwenden. Dieser Fehler tritt auf, wenn der Compiler nicht bestimmen kann, ob die eckigen Klammern Teil der Definition eines Lambda-Ausdrucks oder eines Attributblocks sind. Weitere Informationen zu Lambdaausdrücken finden Sie unter Lambda Expressions (Lambdaausdrücke).

So beheben Sie diesen Fehler

  1. Wenn die eckigen Klammern Teil eines Attributblocks sind:

    1. Geben Sie mindestens ein Attribut im Attributblock an.

    2. Entfernen Sie den Attributblock.

  2. Wenn die eckigen Klammern Teil eines Lambda-Ausdrucks sind, stellen Sie sicher, dass der Lambda-Ausdruck gültige Syntaxregeln befolgt.

    Weitere Informationen zur Syntax von Lambda-Ausdrücken finden Sie unter Lambda-Ausdruckssyntax.

Beispiele

Im folgenden Beispiel wird C3409 generiert.

// C3409.cpp
// compile with: /c
#include <windows.h>
[]   // C3409
class a {};

// OK
[object, uuid("00000000-0000-0000-0000-000000000000")]
__interface x {};

[coclass, uuid("00000000-0000-0000-0000-000000000001")]
class b : public x {};

Im folgenden Beispiel wird C3409 generiert, da ein Lambda-Ausdruck die mutable Spezifikation verwendet, aber keine Parameterliste bereitstellt. Der Compiler kann nicht bestimmen, ob die eckigen Klammern Teil der Definition eines Lambda-Ausdrucks oder eines Attributblocks sind.

// C3409b.cpp

int main()
{
   [] mutable {}();
}

Siehe auch

attribute
Lambda-Ausdrücke
Lambdaausdruckssyntax