Number | Message |
HI2000 | UNKNOWN ERROR Contact Microsoft Product Support Services |
The compiler detected an unknown error condition. | |
Note the circumstances of the error and notify Microsoft Corporation by following the instructions on the Microsoft Product Assistance Request form at the back of one of your manuals. | |
HI2001 | newline in constant |
A string constant was continued onto a second line without either a backslash or closing and opening quotes. | |
To break a string constant onto two lines in the source file, do one of the following:
End the first line with the line-continuation character, a backslash, \. Close the string on the first line with a double quotation mark, and open the string on the next line with another quotation mark. |
|
It is not sufficient to end the first line with \n, the escape sequence for embedding a newline character in a string constant. | |
The following two examples demonstrate causes of this error:
printf("Hello, world"); |
|
or
printf("Hello,\n world"); |
|
The following two examples show ways to correct this error:
printf("Hello,\ world"); |
|
or
printf("Hello," " world"); |
|
Note that any spaces at the beginning of the next line after a line-continuation character are included in the string constant. Note, also, that neither solution actually places a newline character into the string constant. To embed this character:
printf("Hello,\n\ world"); |
|
or
printf("Hello,\ \nworld"); |
|
or
printf("Hello,\n" "world"); |
|
or
printf("Hello," "\nworld"); |
|
HI2003 | expected defined id |
An identifier was expected after the preprocessing keyword defined. | |
HI2004 | expected defined(id) |
An identifier was expected after the left parenthesis, (, following the preprocessing keyword defined. | |
HI2005 | #line expected a line number, found token |
A #line directive lacked the required line-number specification. | |
HI2006 | #include expected a file name, found token |
An #include directive lacked the required filename specification. | |
HI2007 | #define syntax |
An identifier was expected following #define in a preprocessing directive. | |
HI2008 | character : unexpected in macro definition |
The given character was found immediately following the name of the macro. | |
HI2009 | reuse of macro formal identifier |
The given identifier was used more than once in the formal-parameter list of a macro definition. | |
HI2010 | character : unexpected in macro formal-parameter list |
The given character was used incorrectly in the formal-parameter list of a macro definition. | |
HI2012 | missing name following '<' |
An #include directive lacked the required filename specification. | |
HI2013 | missing '>' |
The closing angle bracket (>) was missing from an #include directive. | |
HI2014 | preprocessor command must start as first non-white-space |
Non-white-space characters appeared before the number sign (#) of a preprocessor directive on the same line. | |
HI2015 | too many characters in constant |
A character constant contained more than one character. | |
Note that an escape sequence (for example, \t for tab) is converted to a single character. | |
HI2016 | no closing single quotation mark |
A newline character was found before the closing single quotation mark of a character constant. | |
HI2017 | illegal escape sequence |
An escape sequence appeared where one was not expected. | |
An escape sequence (a backslash, \, followed by a number or letter) may occur only in a character or string constant. | |
HI2018 | unknown character hexnumber |
The ASCII character corresponding to the given hexadecimal number appeared in the source file but is an illegal character. | |
One possible cause of this error is corruption of the source file. Edit the file and look at the line on which the error occurred. | |
HI2019 | expected preprocessor directive, found character |
The given character followed a number sign (#), but it was not the first letter of a preprocessor directive. | |
HI2021 | expected exponent value, not character |
The given character was used as the exponent of a floating-point constant but was not a valid number. | |
HI2022 | number : too big for character |
The octal number following a backslash (\) in a character or string constant was too large to be represented as a character. | |
HI2025 | identifier : enum/struct/union type redefinition |
The given identifier had already been used for an enumeration, structure, or union tag. | |
HI2026 | identifier : member of enum redefinition |
The given identifier has already been used for an enumeration constant, either within the same enumeration type or within another visible enumeration type. | |
HI2027 | use of undefined enum/struct/union identifier |
The given identifier referred to a structure or union type that was not defined. | |
HI2028 | struct/union member needs to be inside a struct/union |
Structure and union members must be declared within the structure or union. | |
This error may be caused by an enumeration declaration containing a declaration of a structure member, as in the following example:
enum a { january, february, int march; /* Illegal structure declaration */ }; |
|
HI2030 | identifier : struct/union member redefinition |
The identifier was used for more than one member of the same structure or union. | |
HI2031 | identifier : function cannot be struct/union member |
The given function was declared to be a member of a structure or union. | |
To correct this error, use a pointer to the function instead. | |
HI2033 | identifier : bit field cannot have indirection |
The given bit field was declared as a pointer (*), which is not allowed. | |
HI2034 | identifier : type of bit field too small for number of bits |
The number of bits specified in the bit-field declaration exceeded the number of bits in the given base type. | |
HI2035 | struct/union identifier : unknown size |
The given structure or union had an undefined size. | |
Usually this occurs when referencing a declared but not defined structure or union tag. | |
For example, the following causes this error:
struct s_tag *ps; ps = &my_var; *ps = 17; /* This line causes the error */ |
|
HI2037 | left of operator specifies undefined struct/union identifier |
The expression before the member-selection operator ( -> or .) identified a structure or union type that was not defined. | |
HI2038 | identifier : not struct/union member |
The given identifier was used in a context that required a structure or union member. | |
HI2041 | illegal digit character for base number |
The given character was not a legal digit for the base used. | |
HI2042 | signed/unsigned keywords mutually exclusive |
The keywords signed and unsigned were both used in a single declaration, as in the following example:
unsigned signed int i; |
|
HI2056 | illegal expression |
An expression was illegal because of a previous error, which may not have produced an error message. | |
HI2057 | expected constant expression |
The context requires a constant expression. | |
HI2058 | constant expression is not integral |
The context requires an integral constant expression. | |
HI2059 | syntax error : token |
The token caused a syntax error. | |
HI2060 | syntax error : end-of-file found |
The compiler expected at least one more token. | |
Some causes of this error include: | |
Omitting a semicolon (;), as in
int *p |
|
Omitting a closing brace (}) from the last function, as in
main() { |
|
HI2061 | syntax error : identifier identifier |
The identifier caused a syntax error. | |
HI2062 | type type unexpected |
The compiler did not expect the given type to appear here, possibly because it already had a required type. | |
HI2063 | identifier : not a function |
The given identifier was not declared as a function, but an attempt was made to use it as a function. | |
HI2064 | term does not evaluate to a function |
An attempt was made to call a function through an expression that did not evaluate to a function pointer. | |
HI2065 | identifier : undefined |
An attempt was made to use an identifier that was not defined. | |
HI2066 | cast to function type is illegal |
An object was cast to a function type, which is illegal. | |
However, it is legal to cast an object to a function pointer. | |
HI2067 | cast to array type is illegal |
An object was cast to an array type. | |
HI2068 | illegal cast |
A type used in a cast operation was not legal for this expression. | |
HI2069 | cast of void term to nonvoid |
The void type was cast to a different type. | |
HI2070 | illegal sizeof operand |
The operand of a sizeof expression was not an identifier or a type name. | |
HI2071 | identifier : illegal storage class |
The given storage class cannot be used in this context. | |
HI2072 | identifier : initialization of a function |
An attempt was made to initialize a function. | |
HI2043 | illegal break |
A break statement is legal only within a do, for, while, or switch statement. | |
HI2044 | illegal continue |
A continue statement is legal only within a do, for, or while statement. | |
HI2045 | identifier : label redefined |
The label appeared before more than one statement in the same function. | |
HI2046 | illegal case |
The keyword case may appear only within a switch statement. | |
HI2047 | illegal default |
The keyword default may appear only within a switch statement. | |
HI2048 | more than one default |
A switch statement contained more than one default label. | |
HI2049 | case value value already used |
The case value was already used in this switch statement. | |
HI2050 | nonintegral switch expression |
A switch expression did not evaluate to an integral value. | |
HI2051 | case expression not constant |
Case expressions must be integral constants. | |
HI2052 | case expression not integral |
Case expressions must be integral constants. | |
HI2054 | expected '(' to follow identifier |
The context requires parentheses after the function identifier. | |
One cause of this error is forgetting an equal sign (=) on a complex initialization, as in
int array1[] /* Missing = */ { 1,2,3 }; |
|
HI2055 | expected formal-parameter list, not a type list |
An argument-type list appeared in a function definition instead of a formal-parameter list. | |
HI2075 | identifier : array initialization needs curly braces |
There were no curly braces, {}, around the given array initializer. | |
HI2076 | identifier : struct/union initialization needs curly braces |
There were no curly braces, {}, around the given structure or union initializer. | |
HI2077 | nonscalar field initializer identifier |
An attempt was made to initialize a bit-field member of a structure with a nonscalar value. | |
HI2078 | too many initializers |
The number of initializers exceeded the number of objects to be initialized. | |
HI2079 | identifier uses undefined struct/union name |
The identifier was declared as structure or union type name, but the name had not been defined. This error may also occur if an attempt is made to initialize an anonymous union. | |
HI2080 | illegal far _fastcall function |
A far _fastcall function may not be compiled with the /Gw option, nor with the /Gq option if stack checking is enabled. | |
HI2082 | redefinition of formal parameter identifier |
A formal parameter to a function was redeclared within the function body. | |
HI2084 | function function already has a body |
The function has already been defined. | |
HI2086 | identifier : redefinition |
The given identifier was defined more than once, or a subsequent declaration differed from a previous one. | |
The following are ways to cause this error:
int a; char a; main() { } main() { int a; int a; } |
|
However, the following does not cause this error:
int a; int a; main() { } |
|
HI2087 | identifier : missing subscript |
The definition of an array with multiple subscripts was missing a subscript value for a dimension other than the first dimension. | |
The following is an example of an illegal definition:
int func(a) char a[10][]; { } |
|
The following is an example of a legal definition:
int func(a) char a[][5]; { } |
|
HI2090 | function returns array |
A function cannot return an array. It can return a pointer to an array. | |
HI2091 | function returns function |
A function cannot return a function. It can return a pointer to a function. | |
HI2092 | array element type cannot be function |
Arrays of functions are not allowed. Arrays of pointers to functions are allowed. | |
HI2095 | function : actual has type void : parameter number |
An attempt was made to pass a void argument to a function. The given number indicates which argument was in error. | |
Formal parameters and arguments to functions cannot have type void. They can, however, have type void * (pointer to void). | |
HI2100 | illegal indirection |
The indirection operator (*) was applied to a nonpointer value. | |
HI2101 | '&' on constant |
The address-of operator (&) did not have an lvalue as its operand. | |
HI2102 | '&' requires lvalue |
The address-of operator (&) must be applied to an lvalue expression. | |
HI2103 | '&' on register variable |
An attempt was made to take the address of a register variable. | |
HI2104 | '&' on bit field ignored |
An attempt was made to take the address of a bit field. | |
HI2105 | operator needs lvalue |
The given operator did not have an lvalue operand. | |
HI2106 | operator : left operand must be lvalue |
The left operand of the given operator was not an lvalue. | |
HI2107 | illegal index, indirection not allowed |
A subscript was applied to an expression that did not evaluate to a pointer. | |
HI2108 | nonintegral index |
A nonintegral expression was used in an array subscript. | |
HI2109 | subscript on nonarray |
A subscript was used on a variable that was not an array. | |
HI2110 | pointer + pointer |
An attempt was made to add one pointer to another using the plus (+) operator. | |
HI2111 | pointer + nonintegral value |
An attempt was made to add a nonintegral value to a pointer. | |
HI2112 | illegal pointer subtraction |
An attempt was made to subtract pointers that did not point to the same type. | |
HI2113 | pointer subtracted from nonpointer |
The right operand in a subtraction operation using the minus (-) operator was a pointer, but the left operand was not. | |
HI2114 | operator : pointer on left; needs integral right |
The left operand of the given operator was a pointer, so the right operand must be an integral value. | |
HI2115 | identifier : incompatible types |
An expression contained incompatible types. | |
HI2117 | operator : illegal for struct/union |
Structure and union type values are not allowed with the given operator. | |
HI2118 | negative subscript |
A value defining an array size was negative. | |
HI2120 | void illegal with all types |
The void type was used in a declaration with another type. | |
HI2121 | operator : bad left/right operand |
The left or right operand of the given operator was illegal for that operator. | |
HI2124 | divide or mod by zero |
A constant expression was evaluated and found to have a zero denominator. | |
HI2128 | identifier : huge array cannot be aligned to segment boundary |
The given huge array was large enough to cross two segment boundaries, but could not be aligned to both boundaries to prevent an individual array element from crossing a boundary. | |
If the size of a huge array causes it to cross two boundaries, the size of each array element must be a power of two, so that a whole number of elements will fit between two segment boundaries. | |
HI2129 | static function function not found |
A forward reference was made to a static function that was never defined. | |
HI2130 | #line expected a string containing the file name, found token |
The optional token following the line number on a #line directive was not a string. | |
HI2131 | more than one memory attribute |
More than one of the keywords _near, _far, _huge, or _based were applied to an item, as in the following example:
typedef int _near nint; nint _far a; /* Illegal */ |
|
HI2132 | syntax error : unexpected identifier |
An identifier appeared in a syntactically illegal context. | |
HI2133 | identifier : unknown size |
An attempt was made to declare an unsized array as a local variable. | |
HI2134 | identifier : struct/union too large |
The size of a structure or union exceeded the 64K compiler limit. | |
HI2136 | function : prototype must have parameter types |
A function prototype declarator had formal-parameter names, but no types were provided for the parameters. | |
A formal parameter in a function prototype must either have a type or be represented by an ellipsis (...) to indicate a variable number of arguments and no type checking. | |
One cause of this error is a misspelling of a type name in a prototype that does not provide the names of formal parameters. | |
HI2137 | empty character constant |
The illegal empty-character constant (`') was used. | |
HI2139 | type following identifier is illegal |
Two types were used in the same declaration. | |
For example:
int double a; |
|
HI2141 | value out of range for enum constant |
An enumeration constant had a value outside the range of values allowed for type int. | |
HI2143 | syntax error : missing token1 before token2 |
The compiler expected token1 to appear before token2. | |
This message may appear if a required closing brace (}), right parenthesis ()), or semicolon (;) is missing. | |
HI2144 | syntax error : missing token before type type |
The compiler expected the given token to appear before the given type name. | |
This message may appear if a required closing brace (}), right parenthesis ()), or semicolon (;) is missing. | |
HI2145 | syntax error : missing token before identifier |
The compiler expected the given token to appear before an identifier. | |
This message may appear if a semicolon (;) does not appear after the last declaration of a block. | |
HI2146 | syntax error : missing token before identifier identifier |
The compiler expected the given token to appear before the given identifier. | |
HI2147 | unknown size |
An attempt was made to increment an index or pointer to an array whose base type has not yet been declared. | |
HI2148 | array too large |
An array exceeded the maximum legal size of 64K. | |
Either reduce the size of the array, or declare it with _huge. | |
HI2149 | identifier : named bit field cannot have 0 width |
The given named bit field had zero width. Only unnamed bit fields are allowed to have zero width. | |
HI2150 | identifier : bit field must have type int, signed int, or unsigned int |
The ANSI C standard requires bit fields to have types of int, signed int, or unsigned int. This message appears only when compiling with the /Za option. | |
HI2151 | more than one language attribute |
More than one keyword specifying a calling convention for a function was given. | |
HI2152 | identifier : pointers to functions with different attributes |
An attempt was made to assign a pointer to a function declared with one calling convention (_cdecl, _fortran, _pascal, or _fastcall) to a pointer to a function declared with a different calling convention. | |
HI2153 | hex constants must have at least 1 hex digit |
The hexadecimal constants 0x, 0X, and \x are illegal. At least one hexadecimal digit must follow the x or X. | |
HI2154 | segment : does not refer to a segment name |
A _based-allocated variable must be allocated in a segment unless it is extern and uninitialized. | |
HI2156 | pragma must be outside function |
A pragma that must be specified at a global level, outside a function body, occurred within a function. | |
For example, the following causes this error:
main() { #pragma optimize("l", on) } |
|
HI2157 | function : must be declared before use in pragma list |
The function name in the list of functions for an alloc_text pragma has not been declared prior to being referenced in the list. | |
HI2158 | identifier : is a function |
The given identifier was specified in the list of variables in a same_seg pragma but was previously declared as a function. | |
HI2159 | more than one storage class specified |
A declaration contained more than one storage class, as in
extern static int i; |
|
HI2160 | ## cannot occur at the beginning of a macro definition |
A macro definition began with a token-pasting operator (##), as in
#define mac(a,b) ##a |
|
HI2161 | ## cannot occur at the end of a macro definition |
A macro definition ended with a token-pasting operator (##), as in
#define mac(a,b) a## |
|
HI2162 | expected macro formal parameter |
The token following a stringizing operator (#) was not a formal-parameter name. | |
For example:
#define print(a) printf(#b) |
|
HI2165 | keyword : cannot modify pointers to data |
The _fortran, _pascal, _cdecl, or _fastcall keyword was used illegally to modify a pointer to data, as in the following example:
char _pascal *p; |
|
HI2166 | lvalue specifies const object |
An attempt was made to modify an item declared with const type. | |
HI2167 | function : too many actual parameters for intrinsic function |
A reference to the intrinsic function name contained too many actual parameters. | |
HI2168 | function : too few actual parameters for intrinsic function |
A reference to the intrinsic function name contained too few actual parameters. | |
HI2171 | operator : illegal operand |
The given unary operator was used with an illegal operand type, as in the following example:
int (*fp)(); double d,d1; fp++; d = ~d1; |
|
HI2172 | function : actual is not a pointer : parameter number |
An attempt was made to pass an argument that was not a pointer to a function that expected a pointer. The given number indicates which argument was in error. | |
HI2173 | function : actual is not a pointer : parameter number1, parameter list number2 |
An attempt was made to pass a nonpointer argument to a function that expected a pointer. | |
This error occurs in calls that return a pointer to a function. The first number indicates which argument was in error; the second number indicates which argument list contained the invalid argument. | |
HI2174 | function : actual has type void : parameter number1, parameter list number2 |
An attempt was made to pass a void argument to a function. Formal parameters and arguments to functions cannot have type void. They can, however, have type void * (pointer to void). | |
This error occurs in calls that return a pointer to a function. The first number indicates which argument was in error; the second number indicates which argument list contained the invalid argument. | |
HI2177 | constant too big |
Information was lost because a constant value was too large to be represented in the type to which it was assigned. | |
HI2178 | identifier : storage class for same_seg variables must be extern |
The given variable was specified in a same_seg pragma, but it was not declared with extern storage class. | |
HI2179 | identifier : was used in same_seg, but storage class is no longer extern |
The given variable was specified in a same_seg pragma, but it was redeclared with a storage class other than extern. | |
HI2185 | identifier : illegal _based allocation |
A _based-allocated variable that explicitly has extern storage class and is uninitialized may not have a base of any of the following:
(_segment) & var _segname("_STACK") (_segment)_self void |
|
If the variable does not explicitly have extern storage class or it is uninitialized, then its base must use _segname("string") where string is any segment name or reserved segment name except "_STACK". | |
HI2187 | cast of near function pointer to far function pointer |
An attempt was made to cast a near function pointer as a far function pointer. | |
HI2189 | #error : string |
An #error directive was encountered. The string is the descriptive text supplied in the directive. | |
HI2193 | identifier : already in a segment |
A variable in the same_seg pragma has already been allocated in a segment, using _based. | |
HI2194 | segment : is a text segment |
The given text segment was used where a data, const, or bss segment was expected. | |
HI2195 | segment : is a data segment |
The given data segment was used where a text segment was expected. | |
HI2200 | function : function has already been defined |
A function name passed as an argument in an alloc_text pragma has already been defined. | |
HI2201 | function : storage class must be extern |
A function declaration appears within a block, but the function is not declared extern. This causes an error if the /Za option is in effect. | |
For example, the following causes this error, when compiled with /Za:
main() { static int func1(); } |
|
HI2205 | identifier : cannot initialize extern block-scoped variables |
A variable with extern storage class may not be initialized in a function. | |
HI2208 | no members defined using this type |
An enum, struct, or union was defined without any members. This is an error only when compiling with /Za; otherwise, it is a warning. | |
HI2209 | type cast in _based construct must be (_segment) |
The only type allowed within a cast in a _based declarator is (_segment). | |
HI2210 | identifier : must be near/far data pointer |
The base in a _based declarator may not be an array, a function, or a _based pointer. | |
HI2211 | (_segment) applied to function identifier function |
The item cast in a _based declarator must not be a function. | |
HI2212 | identifier : _based not available for functions/pointers to functions |
Functions cannot be _based-allocated. Use the alloc_text pragma. | |
HI2213 | identifier : illegal argument to _based |
A symbol used as a base must have type _segment or be a near or far pointer. | |
HI2214 | pointers based on void require the use of :> |
A _based pointer based on void cannot be dereferenced. Use the :> operator to create an address that can be dereferenced. | |
HI2215 | :> operator only for objects based on void |
The right operand of the :> operator must be a pointer based on void, as in
char _based(void) *cbvpi |
|
HI2216 | attribute1 may not be used with attribute2 |
The given function attributes are incompatible. | |
Some combinations of attributes that cause this error are
_saveregs and _interrupt _fastcall and _saveregs _fastcall and _interrupt _fastcall and _export |
|
HI2217 | attribute1 must be used with attribute2 |
The first function attribute requires the second attribute to be used. | |
Some causes for this error include
An interrupt function explicitly declared as near. Interrupt functions must be far. An interrupt function or a function with a variable number of arguments, when that function is declared with the _fortran, _pascal, or _fastcall attribute. Functions declared with the _interrupt attribute or with a variable number of arguments must use the C calling conventions. Remove the _fortran, _pascal, or _fastcall attribute from the function declaration. |
|
HI2218 | type in _based construct must be void |
The only type allowed within a _based construct is void. | |
HI2219 | syntax error : type qualifier must be after '*' |
Either const or volatile appeared where a type or qualifier is not allowed, as in
int (const *p); |
|
HI2220 | warning treated as error - no object file generated |
When the compiler option /WX is used, the first warning generated by the compiler causes this error message to be displayed. | |
Either correct the condition that caused the warning, or compile at a lower warning level or without /WX. | |
HI2221 | '.' : left operand points to struct/union, use -> |
The left operand of the '.' operator must be a struct/union type. It cannot be a pointer to a struct/union type. | |
This error usually means that a -> operator must be used. | |
HI2222 | -> : left operand has struct/union type, use '.' |
The left operand of the -> operator must be a pointer to a struct/union type. It cannot be a struct/union type. | |
This error usually means that a '.' operator must be used. | |
HI2223 | left of ->member must point to struct/union |
The left operand of the -> operator is not a pointer to a struct/union type. | |
This error can occur when the left operand is an undefined variable. Undefined variables have type int. | |
HI2224 | left of .member must have struct/union type |
The left operand of the '.' operator is not a struct/union type. | |
This error can occur when the left operand is an undefined variable. Undefined variables have type int. | |
HI2225 | tagname : first member of struct is unnamed |
The struct with the given tag started with an unnamed member (an alignment member). Struct definitions must start with a named member. |