Recovery: Remove all but one of the specified #pragma directives.
The function must be defined for it to be specified using #pragma entry.
Recovery: Define the function.
The identifier must be defined as a function with external linkage for it to be specified using #pragma entry.
Recovery: Define the function.
The pointer types are not compatible.
Recovery: Remove the _Seg16 type qualifier.
An attempt was made to qualify an identifier with &1 but the identifier is not a pointer.
Recovery: Remove the &1 type qualifier from the declaration or definition, or ensure it qualifies a pointer.
Passing a structure or union by value to a 16-bit function is not supported.
Recovery: Change the parameter to a pointer to a structure or union.
Passing a structure or union by value from a 16-bit function is not supported.
Recovery: Change the return type to a pointer to a structure or union.
The _Seg16 qualifier is not allowed on the target platform.
Recovery: Remove the _Seg16 type qualifier.
An attempt to use an unsupported linkage protocol was made.
Recovery: Remove the linkage protocol keywords.
A variable that is defined but never used probably serves no purpose.
Recovery: Remove the variable definition if you are not going to use the variable.
A variable that is defined but never used likely serves no purpose.
Recovery: Remove the variable definition.
A non-lvalue array is created when a function returns a structure that contains an array. This array cannot be dereferenced.
Recovery: Remove the subscript.
Because the variable has not been initialized, its value is undefined. The results of using an undefined variable are unpredictable.
Recovery: Initialize the variable before its first reference.
The use of goto statements may result in code that is more difficult to trace.
Recovery: Replace the goto statement with equivalent structured-programming constructs.
The parameter is passed to the function, but is not referenced anywhere within the function body.
Recovery: Remove the parameter from the function prototype.
A function that is defined but never used likely serves no purpose.
Recovery: Remove the function definition, unless needed in another compilation unit.
The negative of the most negative value cannot be represented as a positive value of the same type.
Recovery: Change the value or use a larger data type.
The expression evaluates to a number that is not within the range that can be stored by the target.
Recovery: Change the expression so it evaluates to a value in the valid range.
The user cast converts &1 to a type that cannot contain the value of the original type.
Recovery: Change the cast.
Comparing an unsigned value with a signed value may produce unexpected results.
Recovery: Type-cast the unsigned value to a signed type if a signed comparison is desired, or type-cast the negative constant to an unsigned type if an unsigned comparison is desired.
The type specifiers of the values being compared result in a constant result.
Recovery: Simplify or remove the conditional expression.
The type specifiers of the values being compared result in a constant result.
Recovery: Simplify or remove the conditional expression.
The type specifiers of the values being compared may allow the expression to be simplified.
Recovery: Simplify the comparison expression.
Because the value of the conditional expression is constant, it may be possible to simplify or remove the conditional test.
Recovery: Change the conditional expression or remove the conditional test.
Because the value of the conditional expression is constant, it may be possible to simplify or remove the conditional test.
Recovery: Change the conditional expression or remove the conditional test.
A single equal sign '=' is often mistakenly used as an equality comparison operator.
Recovery: Ensure an assignment operation was intended.
The same code path will be taken through every execution of the switch statement.
Recovery: Change the switch expression to be a non-constant value or remove the unused portions of the switch structure.
The left-hand expression is evaluated before the shift operator.
Recovery: Place parentheses around the left-hand expression to make the order of operations explicit.
The right-hand expression is evaluated before the shift operator.
Recovery: Place parentheses around the right-hand expression to make the order of operations explicit.
The comparison expression may be malformed.
Recovery: Ensure that the resulting value from the comparison is appropriate for use in the following comparison.
The left-hand expression is evaluated before the bitwise operator.
Recovery: Place parentheses around the left-hand expression to make the order of operations explicit.
The right-hand expression is evaluated before the bitwise operator.
Recovery: Place parentheses around the right-hand expression to make the order of operations explicit.
This expression may not be portable.
Recovery: Change the shift expression.
This expression may not be portable.
Recovery: Change the shift expression.
If an expression statement has no side effects, then it may be possible to remove the statement with no change in program behaviour.
Recovery: Change or remove the expression statement.
A comma expression evaluates to its right-hand operand.
Recovery: Change the expression.
If the init and/or the re-init expression of a for statement have no side effects, the loop may not execute as desired.
Recovery: Change the init and/or re-init expressions.
Because the variable has not been initialized, its value is undefined. The results of using an undefined variable are unpredictable.
Recovery: Add an initialization statement or change the expression.
The values of the enumerated types may be incompatible.
Recovery: Change the types of the values being assigned.
The value being assigned is not a member of the enumeration.
Recovery: Change the value being assigned, or make it an enumeration member.
Overriding a C keyword with a preprocessor macro may cause unexpected results.
Recovery: Change the name of the macro or remove it.
The trigraph sequence will be converted. A literal interpretation may have been desired.
Recovery: Change the value of the character literal.
The trigraph sequence will be converted. A literal interpretation may have been desired.
Recovery: Change the value of the string literal.
The initialization expression contains extra, possibly unnecessary, braces.
Recovery: Remove the extra braces.
The initialization expression contains extra, possibly unnecessary, braces.
Recovery: Remove the extra braces.
Some array elements were not explicitly initialized. They will be assigned the default value.
Recovery: Add initializations if necessary.
Some members were not explicitly initialized. They will be assigned the default value.
Recovery: Add initializations if necessary.
Assignments between packed/unpacked structures may produce incorrect results.
Recovery: Change the type qualifiers of the values in the assignment.
If a function has a non-void return type, then all return statements must have a return expression of the correct type.
Recovery: Add a return expression.
The K&R-style function declaration is obsolete.
Recovery: Change the function declaration to the prototyped style.
Data loss or truncation may occur because of the type conversions.
Recovery: Change the types of the values in the expression.
Data loss or truncation may occur because of the type conversions.
Recovery: Change the types of the values in the expression.
Data loss or truncation may occur because of the type conversions.
Recovery: Change the types of the values in the expression.
This message traces preprocessor expression evaluation.
Recovery: No response required.
This message traces preprocessor #ifdef and #ifndef evaluation.
Recovery: No response required.
This messages traces conditional compilation activity.
Recovery: No response required.
This #include directive is redundant.
Recovery: Remove the #include directive.
This message traces #line directive evaluation.
Recovery: No response required.
This message traces #line directive evaluation.
Recovery: No response required.
This message traces conditional compilation activity.
Recovery: No response required.
This message traces precompiled header generation activity.
Recovery: No response required.
This message traces precompiled header file generation activity.
Recovery: No response required.
This message traces precompiled header file generation activity.
Recovery: No response required.
This messages traces conditional compilation activity.
Recovery: No response required.
This message traces #undef preprocessor directive evaluation.
Recovery: No response required.
The negation operator is inappropriate for unsigned types.
Recovery: Remove the operator or change the type of the operand.
Two string literals, each delimited by quotation marks, have been combined into a single literal.
Recovery: No response is necessary. This is an informational message.
The name of the macro has already been used.
Recovery: Change the name of the macro.
A function that is defined but never used serves no purpose.
Recovery: Remove the function definition.
According to the ANSI/ISO standard, main should return int not void. Earlier standards (such as K&R) allowed a void return type for main.
Recovery: Change the return type of the function.
Case labels must be members of the type of the switch expression.
Recovery: Change the value of the case label.
The flow of execution is such that this statement will never be reached.
Recovery: Change the control flow in the program, or remove the unreachable statement.
The loop body has no statements, and the conditional expression has no side effects.
Recovery: If this is what was intended, use '{}' instead of a semi-colon as empty loop body to avoid this message.
The value of the conditional expression and/or the lack of exit points may result in an infinite loop.
Recovery: Adjust the conditional expression or add loop exit statements.
Constant folding results in an overflow.
Recovery: Change the expression.
Constant folding results in an overflow.
Recovery: Change the expression.
Constant folding results in Not-a-Number (NaN).
Recovery: Change the expression.
If the condition is true, then no statement is executed.
Recovery: Add a statement to be executed, or remove the conditional statement.
A conditional statement with empty branches is possibly degenerate.
Recovery: Add code to the conditional branches.
The preceding case did not end with a break, return, or goto statement, allowing the path of execution to fall-through to the code in this case.
Recovery: Add an appropriate terminating statement to the previous case, unless the fall-through was intentional.
A return statement should be used to exit any function whose return type is non-void.
Recovery: Add a return statement, or change the function to return void.
The initialization expression contains extra, possibly unnecessary, braces.
Recovery: Remove the extra braces.
Code within a switch statement block that is not preceded by either 'default' or 'case' is never executed, and may be removed. Switch statements with neither 'default' or 'case' are probably incorrect.
Recovery: Change the switch statement to include cases.
The external name exceeds the maximum length and has been truncated. This may result in unexpected behavior if two different names become the same after truncation.
Recovery: Reduce the length of the external name.
An attempt has been made to attach a parameter declaration list with a declarator which cannot have one.
Recovery: Change declarator or remove parameter declaration list.
An index has been used with a pointer to an incomplete type.
Recovery: Declare the type that is pointed at or remove the index.
An incomplete aggregate cannot be used as an argument to a function.
Recovery: Declare the type that is pointed at or use a pointer to the aggregate.
A call to __parmdwords has been made inside of a function that does not have _System calling convention.
Recovery: Change the function so that it has _System calling convention or remove the call to __parmdwords.
A struct or union tag was declared inside a parameter list or a function body, but no member declaration list was provided.
Recovery: If the struct or union tag was declared inside a parameter list, provide a member declaration list at file scope. If the tag was declared inside a function body, provide a member declaration list within that function body.
A variable that is initialized but never used serves no purpose.
Recovery: Remove the variable definition if you do not intend to use it.
A variable that is initialized but never used likely serves no purpose.
Recovery: Remove the variable definition if you do not intend to use it.
The definition within the current scope hides a definition with the same name in an enclosing scope.
Recovery: Change the name to avoid redefining it.
A variable that is defined but never used likely serves no purpose.
Recovery: Remove the variable definition, unless needed in another compilation unit.
A variable that is initialized but never used serves no purpose.
Recovery: Remove the variable definition, unless needed in another compilation unit.
An attempt is being made to convert a pointer of one type to a pointer of another type.
Recovery: Check the types of the values involved in the expression, and make them compatible.
The parameter for the pragma is incorrect and of the wrong type.
Recovery: Look up correct type in the C Language Reference.
An incomplete enum is being used where a complete enum type is required.
Recovery: Complete the type declaration.
An incomplete aggregate is being used where a complete struct or union is required.
Recovery: Complete the type declaration.
A return type other than int was specified for function main.
Recovery: Change the return type to int.
![]()
Summary of Compiler Error Messages