We recommend using Visual Studio 2017

Compiler Error C2513


The latest version of this topic can be found at Compiler Error C2513.

type' : no variable declared before '='

The type specifier appears in declaration with no variable identifier.

The following sample generates C2513:

// C2513.cpp  
int main() {  
   int = 9;   // C2513  
   int i = 9;   // OK  

This error can also be generated as a result of a compiler conformance work done for Visual Studio .NET 2003: initialization of a typedef no longer allowed. The initialization of a typedef is not allowed by the standard and now generates a compiler error.

// C2513b.cpp  
// compile with: /c  
typedef struct S {  
   int m_i;  
} S = { 1 };   // C2513  
// try the following line instead  
// } S;  

An alternative would be to delete typedef to define a variable with aggregate initializer list, but this is not recommended because it will create a variable with the same name as the type and hide the type name.