Only pointer declarations can include incomplete types. A struct or union tag is undefined if the list describing the name and type of its members has not been specified.
Recovery: Define the tag before it is used in the declaration of an identifier or complete the declaration.
If an enum constant is initialized in the definition of an enum tag, the initial value of the constant must be an integral expression that has a value representable as an int.
Recovery: Remove the initial value, or ensure that the initial value is an integral constant expression with a value representable as an int.
A named bit field must have a positive length; a zero length bit field is used for alignment only and must not be named.
Recovery: Redefine the bit field with a length greater than zero or remove the name of the bit-field.
The indicated qualifier appears more than once in the type declaration.
Recovery: Remove one of the duplicate qualifiers.
A duplicate type specifier appears in the type declaration.
Recovery: Remove one of the duplicate type specifiers.
Valid scalar types include: signed and unsigned char; signed and unsigned short, long, long long, and int; enum, float, double, long double, and pointers.
Recovery: Change the type of the operand, or use a different operator.
A duplicate storage class specifier appears in the declaration.
Recovery: Remove one of the duplicate storage class specifiers.
The const or volatile qualifier cannot be used to qualify a function's return type.
Recovery: Remove the qualifier or return a pointer to the qualified type.
The left hand operand of the arrow operator (->) must have type pointer to structure or pointer to union.
Recovery: Change the operand.
If one operand in the conditional expression has type struct or union, the other operand must also have type struct or union.
Recovery: Make the operands compatible.
For arrays of automatic or static storage class, all dimensions of the array must be specified in the declaration. If the declaration provides an initialization, the first dimensions may be unspecified because the initialization will determine the size needed.
Recovery: Specify all of the dimensions in the array declaration.
The size of the array is too large for the compiler to represent internally.
Recovery: Reduce the size of the array.
The declaration specifier was the only component of the declaration. eg. int ;
Recovery: Specify at least one declarator, tag, or member of an enumeration.
The only operator that can be applied to an array declared with storage class specifier register is sizeof.
Recovery: Remove the operation or remove the register storage class specifier.
The option is not completely specified; a suboption is required.
Recovery: Add a suboption.
The type of a bit-field must be a (possibly qualified) version of int, signed int or unsigned int.
Recovery: Define the bit-field with a type signed int or unsigned int.
The type void can only be used as the return type or parameter list of a function, or with a pointer. No other object can be of type void.
Recovery: Ensure that the declaration uses type void correctly.
A static function was declared and referenced in this file. The definition of the function was not found before the end of the file. When a function is declared to be static, the function definition must appear in the same file.
Recovery: Change the storage class to extern or provide a function definition in this file.
Valid scalar types include: signed and unsigned char; signed and unsigned short, long, long long, and int; enum, float, double, long double, and pointers.
Recovery: Change the expression.
The syntax of the declaration is not correct. The compiler assumes it is the declaration of a function in which the parentheses surrounding the parameters are missing.
Recovery: Check the syntax of the declaration. Ensure the object name and type are properly specified. Check for incorrect spelling or missing parentheses.
An attempt was made to initialize an array with a string that is too long. The largest possible prefix of the string has been placed in the array.
Recovery: Increase the size of the array. Make sure you include space for the terminating null character.
The initializer list for a declarator must be enclosed in braces.
Recovery: Check for misplaced or missing braces.
The FLAG option takes two suboptions separated by ':'. The suboptions indicate the level of errors to be reported in the source listing and in stderr.
Recovery: Only specify two suboptions to the FLAG option.
A parameter can only be defined once but more than one definition for the parameter has been specified. Parameters names must be unique.
Recovery: Remove one of the parameter declarations or change the name of the identifier.
In a C function definition, all parameters must be named in the parameter list. The only exceptions are parameters of type void.
Recovery: Name the parameter or remove it.
An invalid option was specified.
Recovery: Correct the spelling of the option.
The option can only be specified on the command line and is not valid as part of an options pragma.
Recovery: Specify option on command line.
The option is specified in a pragma options after the first C token in the compilation unit. It must be specified before the first token.
Recovery: Specify the option on the command line or move the pragma options before the first token.
More than one suboption was specified for an option that can only accept one suboption.
Recovery: Remove the extra suboptions.
The function call contains more arguments than specified in the parameter list of the built-in function.
Recovery: Change the number of arguments in the function call.
Built-in functions are declared by the compiler and cannot be redeclared.
Recovery: Remove the declaration.
Built-in functions are defined by the compiler and cannot be redefined.
Recovery: Remove the function definition.
The function call contains fewer arguments than specified in the parameter list of the built-in function.
Recovery: Change the number of arguments in the function call.
Read-only strings cannot be modified.
Recovery: Modify a copy of the string or change the string's read-only status.
The FLAG option takes two suboptions separated by ':'. The suboptions indicate the level of errors to be reported in the source listing and in stderr.
Recovery: Specify two suboptions to the FLAG option.
The #line directive tells the compiler to treat the following source lines as starting from the specified line. This number must be a non-negative offset from the beginning of the file.
Recovery: Change line number to a non-negative integer.
String literals must end before the end of the line. To create a string literal longer than one line, use the line continuation sequence (a backslash (\) at the end of the line), or concatenate adjacent string literal.
Recovery: End the string with a quotation mark before the end of the line or use the continuation sequence.
The name is reserved for the compiler's use.
Recovery: Choose another name.
See the C and C++ Language Reference for a description of a floating-point constant.
Recovery: Ensure that the floating-point constant does not contain any characters that are not valid.
Const qualified variable declarations should contain an initializer. Otherwise you cannot assign the variable a value.
Recovery: Initialize the const variable when you declare it.
Refer to the C and C++ Language Reference for information on valid characters.
Recovery: Change the character.
You cannot take the address of a built-in function or declare a pointer to a built-in function.
Recovery: Remove the operation that takes the address of the built-in function.
You cannot take the address of an array of size zero.
Recovery: Remove the operation that takes the address of the zero-sized array.
Except for pointers, you cannot declare an object of incomplete type.
Recovery: Complete the type declaration.
The size of an array must be an expression that evaluates to a compile-time integer constant that is larger than zero.
Recovery: Change the expression.
An attempt was made to initialize a variable with an incompatible type.
Recovery: Ensure types are compatible.
There was no header filename after the #include directive.
Recovery: Specify the header file name. Enclose system header names in angle brackets and user header names in double quotes.
Every #if, #ifdef, and #ifndef must have a corresponding #endif.
Recovery: End the conditional preprocessor statements with a #endif.
There must be a macro name after every #define, #undef, #ifdef or #ifndef.
Recovery: Ensure that a macro name follows the #define, #undef, #ifdef, or #ifndef preprocessor directive.
![]()
Summary of Compiler Error Messages