Compiler errors C2000 through C2099

The articles in this section of the documentation explain a subset of the error messages that are generated by the compiler.

Important

The Visual Studio compilers and build tools can report many kinds of errors and warnings. After an error or warning is found, the build tools may make assumptions about code intent and attempt to continue, so that more issues can be reported at the same time. If the tools make the wrong assumption, later errors or warnings may not apply to your project. When you correct issues in your project, always start with the first error or warning that's reported, and rebuild often. One fix may make many subsequent errors go away.

To get help on a particular diagnostic message in Visual Studio, select it in the Output window and press the F1 key. Visual Studio opens the documentation page for that error, if one exists. You can also use the search tool at the top of the page to find articles about specific errors or warnings. Or, browse the list of errors and warnings by tool and type in the table of contents on this page.

Note

Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page when you used F1 and you think the error or warning message needs additional explanation, let us know. You can use the feedback buttons on this page to raise a documentation issue on GitHub. If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the Developer Community site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose Help > Send Feedback > Report a Problem, or submit a suggestion by using Help > Send Feedback > Send a Suggestion.

You may find additional assistance for errors and warnings in Microsoft Learn Q&A forums. Or, search for the error or warning number on the Visual Studio C++ Developer Community site. You can also search Stack Overflow to find solutions.

For links to additional help and community resources, see Visual C++ Help and Community.

Error messages

Error Message
Compiler error C2000 UNKNOWN ERROR
Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information
Compiler error C2001 newline in constant
Compiler error C2002 invalid wide-character constant
Compiler error C2003 expected 'defined id'
Compiler error C2004 expected 'defined(id)'
Compiler error C2005 #line expected a line number, found 'token'
Compiler error C2006 'directive': expected a filename, found 'token'
Compiler error C2007 #define syntax
Compiler error C2008 'character': unexpected in macro definition
Compiler error C2009 reuse of macro formal 'identifier'
Compiler error C2010 'character': unexpected in macro formal parameter list
Compiler error C2011 'identifier': 'type' type redefinition
Compiler error C2012 missing name following '<'
Compiler error C2013 missing '>'
Compiler error C2014 preprocessor command must start as first nonwhite space
Compiler error C2015 too many characters in constant
Compiler error C2016 C requires that a struct or union has at least one member
Compiler error C2017 illegal escape sequence
Compiler error C2018 unknown character '0xvalue'
Compiler error C2019 expected preprocessor directive, found 'character'
Compiler error C2020 'member': 'class' member redefinition
Compiler error C2021 expected exponent value, not 'character'
Compiler error C2022 'number': too big for character
Compiler error C2023 'identifier': Alignment (value-1) different from prior declaration (value-2)
Compiler error C2024 'alignas' attribute applies to variables, data members and tag types only
Compiler error C2025 invalid or corrupted binary module interface file: 'filename'
Compiler error C2026 string too big, trailing characters truncated
Compiler error C2027 use of undefined type 'type'
Compiler error C2028 struct/union member must be inside a struct/union
Compiler error C2029 (Obsolete) left of 'token' specifies undefined class/struct/interface 'identifier'
Compiler error C2030 a destructor with 'protected private' accessibility cannot be a member of a class declared 'sealed'
Compiler error C2031 a virtual destructor with 'accessibility' accessibility is not allowed for this type
Compiler error C2032 'identifier': function cannot be member of struct/union 'type'
Compiler error C2033 'identifier': bit field cannot have indirection
Compiler error C2034 'identifier': type of bit field too small for number of bits
Compiler error C2035 a non-virtual destructor with 'accessibility' accessibility is not allowed for this type
Compiler error C2036 'identifier': unknown size
Compiler error C2037 left of 'operator' specifies undefined struct/union 'type'
Compiler error C2038 the std namespace cannot be inline
Compiler error C2039 'identifier1': is not a member of 'identifier2'
Compiler error C2040 'operator': 'identifier1' differs in levels of indirection from 'identifier2'
Compiler error C2041 illegal digit 'character' for base 'number'
Compiler error C2042 signed/unsigned keywords mutually exclusive
Compiler error C2043 illegal break
Compiler error C2044 illegal continue
Compiler error C2045 'identifier': label redefined
Compiler error C2046 illegal case
Compiler error C2047 illegal default
Compiler error C2048 more than one default
Compiler error C2049 'namespace-name': non-inline namespace cannot be reopened as inline
Compiler error C2050 switch expression not integral
Compiler error C2051 case expression not constant
Compiler error C2052 'type': illegal type for case expression
Compiler error C2053 'identifier': wide string mismatch
Compiler error C2054 expected '(' to follow 'identifier'
Compiler error C2055 expected formal parameter list, not a type list
Compiler error C2056 illegal expression
Compiler error C2057 expected constant expression
Compiler error C2058 constant expression is not integral
Compiler error C2059 syntax error: 'token'
Compiler error C2060 syntax error: end of file found
Compiler error C2061 syntax error: identifier 'identifier'
Compiler error C2062 type 'type' unexpected
Compiler error C2063 'identifier': not a function
Compiler error C2064 term does not evaluate to a function taking number arguments
Compiler error C2065 'identifier': undeclared identifier
Compiler error C2066 cast to function type is illegal
Compiler error C2067 cast to array type is illegal
Compiler error C2068 illegal use of overloaded function. Missing argument list?
Compiler error C2069 cast of 'void' term to non-'void'
Compiler error C2070 'type': illegal sizeof operand
Compiler error C2071 'identifier': illegal storage class
Compiler error C2072 'identifier': initialization of a function
Compiler error C2073 (Obsolete) 'identifier': elements of partially initialized array must have a default constructor
Compiler error C2074 'identifier': 'type' initialization requires a brace-enclosed initializer list
Compiler error C2075 'identifier': array initialization requires a brace-enclosed initializer list
Compiler error C2076 a brace-enclosed initializer list cannot be used in a new-expression whose type contains 'type'
Compiler error C2077 non-scalar field initializer 'identifier'
Compiler error C2078 too many initializers
Compiler error C2079 'identifier' uses undefined struct/class/union 'type'
Compiler error C2080 'identifier': the type for 'type' can only be deduced from a single initializer expression
Compiler error C2081 'identifier': name in formal parameter list illegal
Compiler error C2082 redefinition of formal parameter 'identifier'
Compiler error C2083 struct/union comparison illegal
Compiler error C2084 function 'identifier' already has a body
Compiler error C2085 'identifier': not in formal parameter list
Compiler error C2086 'identifier': redefinition
Compiler error C2087 'identifier': missing subscript
Compiler error C2088 'operator': illegal for struct/class/union
Compiler error C2089 'identifier': 'type' too large
Compiler error C2090 function returns array
Compiler error C2091 function returns function
Compiler error C2092 'identifier' array element type cannot be function
Compiler error C2093 'identifier1': cannot be initialized using address of automatic variable 'identifier2'
Compiler error C2094 label 'identifier' was undefined
Compiler error C2095 'function': actual parameter has type 'void': parameter number
Compiler error C2096 'identifier': A data member cannot be initialized with a parenthesized initializer
Compiler error C2097 illegal initialization
Compiler error C2098 unexpected token after data member 'identifier'
Compiler error C2099 initializer is not a constant

See also

C/C++ Compiler and build tools errors and warnings
Compiler errors C2000 - C3999, C7000 - C7999