Error Messages

From HI-TECH C for CP/M Fan WIKI(EN)
Jump to: navigation, search

Error Messages produced by the compiler are listed below. Each message is followed by the name of the program which produces it, and some further description of what causes the message or what to do about it.


'.' expected after '..' P1
The ellipsis symbol must have three dots


actuals too long CPP
Reduce length of macro arguments
argument list conflicts with prototype P1
The argument list in a function definition must agree with a prototype if one exists
argument redeclared P1
This argument has been declared twice
arithmetic overflow in constant expression CGEN
Evaluation of this constant expression produced an arithmetic overflow. This may or may not represent a true error.
array index out of bounds P1
An array index expression evaluates to a constant which is less than zero or greater than or equal to the dimension of the array
Assertion CGEN
Internal error - contact HI-TECH
attempt to modify const object P1
An attempt has been made to assign to or otherwise modify an object designated as 'const'


bad bitfield type P1
Bitfields must be of type 'int'
Bad conval CGEN
Internal error - contact HI-TECH
Bad dimensions CGEN
An array has bad dimensions - probably zero
Bad element count expr CGEN
Internal error - contact HI-TECH
bad formal CPP
Check macro defintion syntax
bad include syntax CPP
Use only "" and <> for include files
Bad int. code CGEN
The intermediate code file has been corrupted - can be caused by running out of disk space
Bad -M option CGEN
A -M option passed to the code generator is unknown
Bad mod '+' for how = c CGEN
Internal error - contact HI-TECH
bad object code format LINK
This file is either corrupted or not a valid object file
Bad op d to swaplog CGEN
Internal error - contact HI-TECH
Bad op n to revlog CGEN
Internal error - contact HI-TECH
bad origin format in spec LINK
An address in a -p option is invalid
bad '-p' format LINK
The -p option provided is invalid
Bad pragma c CGEN
The code generator has been passed a pragma it does not know about
Bad putwsize CGEN
Internal error - contact HI-TECH
bad storage class P1, CGEN
The speficied storage class is illegal
Bad U usage CGEN
Internal error - contact HI-TECH
Bit field too large (n bits) CGEN
A bit field may not be larger than an int


Cannot get memory LINK
The linker has run out of dynamic memory
Can't be both far and near P1
The 'far' and 'near' keywords cannot appear in the same type specifier
can't be long P1
Chars and shorts cannot be long
can't be register P1
An extern or static variable may not be register
can't be short P1
Float and char cannot be short
can't be unsigned P1
Float cannot be unsigned
can't call an interrupt function P1
A function qualified 'interrupt' can only be called by hardware, not by an ordinary function call
Can't create filename CGEN
The file specified could not be created
Can't create xref file P1
The cross reference file specified could not be created
Can't create CPP
Output file could not be created
Can't create LINK
The linker cannot create a file
Can't find include file CPP
Check and correct the include file name - spaces are not allowed in file names
Can't find register for bits CGEN
Internal error - contact HI-TECH
Can't generate code for this expression CGEN
The code generator is unable to generate code for this expression - simplifying the expression (e.g. computing values into temporary variables) will usually correct

it, otherwise contact HI-TECH

can't have array of functions P1
You cannot have an array of functions - you can have an array of pointers to functions
Can't have 'port' variable CGEN
You cannot declare a variable to be qualified 'port' - you can only use port to qualify pointers or typecast constant values
can't have storage class P1
A storage class may not appear in a prototype argument
can't initialise auto aggregates P1
You cannot initialise a structure or array inside a function unless it is static
can't initialize arg P1
An argument cannot have an initializer
can't mix proto and non-proto args P1
You cannot mix prototype and non-prototype arguments even in a function definitional
Can't open filename CGEN
The file specified could not be opened for reading
Can't open LINK
The linker cannot open a file
Can't seek LINK
The linker could not seek in file
can't take address of register variable P1
You can't take the address of a variable in a register
can't take sizeof func CGEN
You can't take the size of a function. You can take the size of a function call
can't take this address P1
The expression does not have an address
'case' not in switch P1
A 'case' label is permitted only inside a switch
char const too long P1
A character constant may have only one character in it
close error (disk space?) P1
Probably out of disk space
common symbol psect conflict LINK
A common symbol is defined to be in more than one psect
constant conditional branch CGEN
You have a program structure testing a constant expression, e.g. while(1). You should substitute for this the more efficient for(;;)
constant expression required P1
A constant expression is required in e.g. an array dimension
constant operand to || or && CGEN
A logical operator has a constant operand which has been optimized out


declarator too complex P1
This declaration is too complex for the compiler to handle
default case redefined P1
Only one default case is permitted in a switch
'default' not in switch P1
A 'default' label is permitted only inside a switch
digit out of range P1
An octal constant may not contain 7 or 8, and a decimal constant may not contain A-F
dimension required P1
A dimension is required for all except the most significant in an array declaration
Division by zero CGEN
Attempt to divide by zero in this expression
Duplicate case label n CGEN
There are two case labels in this switch that have the same value
Duplicate -d flag LINK
Only one -d flag is allowed to the linker
duplicate label P1
This label is defined twice
Duplicate -m flag LINK
Only one -m flag is allowed to the linker
duplicate qualifier P1
The same qualifier appears more than once in this type specifier


entry point multiply defined LINK
A program can only have one entry point (start address)
EOF in #asm P1
End of file was encounterd after #asm and before a #endasm was seen
Error closing output file CGEN,CPP
Probably means you have run out of disk space
excessive -I file ignored CPP
Use fewer -I options
expand - bad how CGEN
Internal error - contact HI-TECH
expand - bad which CGEN
Internal error - contact HI-TECH
exponent expected P1
An exponent is expected after the 'e' or 'E' in a floating point constant. The exponent must contain only +, - and digits 0-9
Expression error CGEN
Internal error - contact HI-TECH
expression generates no code CGEN
This expression has no side effects and thus generates no code. It has been optimized out
expression syntax P1
The expression is badly formed
expression too complex P1
The expression has too many nested parantheses or other nested constructs


Fixup overflow referencing LINK
The linker has relocated a reference to a psect or symbol and the relocated address is too big to fit into the space, e.g. a relocated one byte address exceeds 256 or a relocated 16 bit address exceeds 65536
float param coerced to double P1
This float parameter has been converted to double - a prototype will override this coercion
function() declared implicit int P1
This function has been called without an explicit declaration. It is wise to explicitly declare all functions, preferably with a prototype. This will avoid many potential errors where your program comprises more than one source file
function does not take arguments P1
The prototype for this function indicates it takes no arguments
function or function pointer required P1
A function identifier or pointer to function is required for a function call.
functions can't return arrays P1
A function cannot return an array - it can return a pointer
functions can't return functions P1
A function cannot return a function - it can return a pointer to function


hex digit expected P1
A hex digit is expected after '0x'


identifier is a structure tag P1
A structure tag has been used in a context where another kind of tag is expected, e.g. saying struct fred where fred has previously been declared as union fred.
identifier is a union tag P1
Similar to the above error
identifier is an enum tag P1
Similar to the above error
identifier: large offset CGEN
Z80 only: This identifier has a large offset from the stack frame and thus access to it is inefficient. In a function any arrays should be declared after any simple variables
identifier redeclared P1
The identifier has been redeclared with different attributes
identifier redefined P1
An identifier has been defined twice
If-less else CPP
Check #if usage
If-less endif CPP
Check #if usage
illegal '#' directive P1
A # directive passed through to the first pass is unknown. If this occurs with a #include it may be caused by a previous include file not having a <CR><LF> or newline on the last line.
Illegal character in preprocessor if CPP
Check for strange character
illegal character P1
A character unknown to the compiler has been encountered. The value given is the octal value of the character
illegal conversion between pointer types P1
The expression causes one pointer type to be converted to another incompatible type
illegal conversion of integer to pointer P1
An integer is used where a pointer is expected
illegal conversion of pointer to integer P1
A pointer is used where an integer is expected
illegal conversion P1
The type conversion here is illegal
Illegal flag LINK
This option is illegal
illegal function qualifier(s) P1
A function cannot have 'const' qualification
illegal initialisation P1
The initialisation of this variable is illegal
Illegal number CPP
Check number syntax
illegal type for array dimension P1
An array dimension must be an integral quantity
illegal type for index expression P1
An array index must be a simple integral expression
illegal type for switch expression P1
The expression in a 'switch' must be integral
illegal use of void expression P1
Void expressions may not be used in any way
implicit conversion of float to integer P1
A floating point value has been converted to integer - truncation may occur
implicit return at end of non-void function P1
A function with a non-void type has returned without a return statement
implict signed to unsigned conversion P1
Unwanted sign extension may occur here. Add an explicit typecast to force exactly the conversion you want
inappropriate break/continue P1
inappropriate 'else' P1
An 'else' has appeared without a matching 'if'
inconsistent storage class P1
Only one storage class may be specified in a declaration
inconsistent type P1
Only one basic type may be specified in a declaration
initialisation illegal in arg list P1
You cannot initialise a function parameter
initialisation syntax P1
The syntax of this initialisation is illegal
initializer in 'extern' declaration P1
A declaration with the 'extern' keyword has an initializer; this is not permitted as the extern declaration reserves no storage
integer constant expected P1
An integer constant was expected here
integer expression required P1
An integral expression is required here
integral type required P1
An integral type is required here


large offset CGEN
Z80 only: This identifier has a large offset from the stack frame and thus access to it is inefficient. In a function any arrays should be declared after any simple variables
Line too long P1
The source line is too long, or does not have a <CR><LF> or newline at the end
local psect conflicts with global psect of same name LINK
A local psect cannot have the same name as a global psect
logical type required P1
A logical type (i.e. an integral type) is required as the subject of a conditional expression
lvalue required P1
An lvalue, i.e. something which can be assigned to, is required after an '&' or on the left hand of an assignment


macro recursion CPP
A preprocessor macro has attempted to expand itself. This would create infinite recursion
member is not a member of the struct/union P1
This member is not in the structure or union with which it is used
members cannot be functions P1
A member cannot be a function - it can be a pointer to function
Missing arg to -u LINK
-u requires an argument
Missing arg to -w LINK
-w requires an argument
missing ) CPP
Put correct ) in expression
Missing number after % in -p option LINK
After % in a -p option there must be a number
Missing number after pragma 'pack' P1
The correct syntax is #pragma pack(n) where n is 1, 2 or 4.
module has code below file base LINK
A -C option was specified but the program has code below the address specified as the base of the binary file
multiply defined symbol LINK
A symbol is defined more than once


name is a union, struct or enum P1
A union, struct or enum tag has been re-used in a different context
No case labels CGEN
This switch has no case labels
no identifier in declaration P1
This declaration should have an identifier in it
No room CGEN
The code generator has run out of dynamic memory. You will need to reduce the number of symbols and/or the complexity of expressions
No source file CPP
Source file could not be found - check spelling, directory paths etc.
no space CPP
Reduce number/size of macro definitions
no start record
entry point defaults to zero LINK
No start address has been specified for the program; the linker has set the start address to 0
Non-constant case label CGEN
This case label does not evaluate to an integral constant
non-void function returns no value P1
A function which should return a value has a 'return' statement with no value
not a variable identifier P1
The identifier is not a variable - it may be e.g. a label or structure tag
not an argument P1
This identifier is not in the argument list for this function


only functions may be qualified interrupt P1
The type qualifier 'interrupt' may be applied only to functions, not variables.
only functions may be void P1
Only functions, not variables, may be declared void
only lvalues may be assigned to or modified P1
You have attempted to modify an expression which does not identify a storage location
only register storage class allowed P1
A parameter may only be auto or register
operands of operator not same pointer type P1
The operands to the named operator in the expression are both pointers but are not the same pointer type
operands of operator not same type P1
The operands to the named operator in the expression are incompatible types


pointer required P1
A pointer is required after a '*' (indirection) operator
popreg - bad reg CGEN
Internal error - contact HI-TECH
portion of expression has no effect CGEN
A portion of this expression has no effect on its value and no side effects
probable missing '}' in previous block P1
A declaration has been encountered where an expression was expected. The likely cause of this is that you have omitted a closing '}' in the function above this point.
psect cannot be in classes a and b LINK
A psect can only be in one class
psect exceeds max size LINK
This psect is larger than a specified maximum size
psect is absolute LINK
This psect is absolute and cannot have a link address specified in a -p option
Psect not loaded on 0xhexnum boundary LINK
This psect must be loaded on a specific boundary
Psect not relocated on 0xhexnum boundary LINK
This psect must be linked on a specific boundary
psect origin multiply defined LINK
This psect has its link address defined more than once
pushreg - bad reg CGEN
Internal error - contact HI-TECH


redundant & applied to array P1
An array type has an '&' operator applied to it. It has been ignored since use of an array implicitly gives its address
regused - bad arg to G CGEN
Internal error - contact HI-TECH


signatures do not matchLINK
An extern function has been declared with an incorrect prototype. For example if an argument is declared as a long in an extern declaration, but is really an int, a signature mismatch will occur.
signed bitfields not supported P1
Only unsigned bitfields are supported
simple type required P1
An array or structure type cannot be used here
Sizeof yields 0 CGEN
The size of an object has evaluated to zero in a context where this is illegal, e.g. incrementing a pointer to a zero length object.
storage class illegal P1
A storage class may not be specified here
struct/union member expected P1
A structure or union member is required after a '. or '->'
struct/union redefined P1
This structure or union has been defined twice
struct/union required P1
A structure or union identifier is required before a '.'
Switch on long! CGEN
Switching on a long expression is not supported
symbol cannot be global LINK
Stack, filename or line number symbols cannot be global
Syntax error in checksum list LINK
The checksum list provided is invalid


token too long CPP
Shorten token (e.g. identifier)
too few arguments P1
The protype for this function lists more arguments than have been supplied
too many arguments P1
More arguments have been supplied than listed in the prototype for this function
Too many cases in switch CGEN,P1
There are too many cases in this switch
too many -D options CPP
Use fewer -D options
too many defines CPP
Reduce number of macro definitions
Too many errors CGEN
CGEN has given up because there were too many errors.
too many formals CPP
Reduce number of parameters to this macro definition
Too many initializers CGEN
There are too many initializers for this object
Too many psects LINK
There are too many psects for the symbol table
Too many symbols LINK
There are too many symbols for the linker symbol table
too many -U options CPP
Use fewer -U options
too much defining CPP
Reduce number/size of macros
too much indirection P1
Too many '*'s in this declaration
too much pushback CPP
Simplify macro usage
type conflict P1
There is a conflict of types in this expression, e.g. attempting to assign a structure to a simple type
type specifier reqd. for proto arg P1
A prototype argument must have a basic type


undefined control CPP
Check use of #
undefined enum tag P1
This enumerated type tag has not been defined
undefined identifier P1
This identifier has not been defined before use
undefined struct/union P1
The structure or union used has not been defined
undefined symbol LINK
A list of undefined symbols follows. If some of the symbols should be in a library which was linked, it may be caused by a library ordering problem. In this case rebuild the library with the correct ordering or specify the library more than once in the link command
unexpected EOF P1
End of file was encountered in the middle of a C construct. This is commonly caused by omission of a closing '}' earlier in the program.
Unknown predicate CGEN
Internal error - contact HI-TECH
unknown psect LINK
The psect specifed in a -p option is not present in the program. Check the spelling and check the case - upper case does not match lower case
unreachable code P1
This section of code can never be executed as there is no possible path to reach it
Unreasonable include nesting CPP
Reduce number of include files
Unreasonable matching depth CGEN
Internal error - contact HI-TECH
unterminated macro call CPP
Probably missing )


void function cannot return value P1
A function declared void cannot return a value


Write error (out of disk space?) LINK
Probably means the disk is full