8.2 Messages 500 Thru 999

(500) undefined symbols: (Linker)

A list of symbols follows that were undefined at link time. These errors could be due to spelling error, or failure to link an appropriate module.

(501) program entry point is defined more than once (Linker)

There is more than one entry point defined in the object files given the linker. End entry point is specified after the END directive. The runtime startup code defines the entry point, for example:
powerup:
goto start
END  powerup  ; end of file and define entry point
; other files that use END should not define another entry point

(502) incomplete * record body: length = * (Linker)

An object file contained a record with an illegal size. This probably means the file is truncated or not an object file. Contact Microchip Technical Support with details.

(503) ident records do not match (Linker)

The object files passed to the linker do not have matching ident records. This means they are for different device types.

(504) object code version is greater than *.* (Linker)

The object code version of an object module is higher than the highest version the linker is known to work with. Check that you are using the correct linker. Contact Microchip Technical Support if you have not patched the linker.

(505) no end record found inobject file (Linker)

An object file did not contain an end record. This probably means the file is corrupted or not an object file. Contact Microchip Technical Support if the object file was generated by the compiler.

(506) object file record too long: *+* (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(507) unexpected end of file in object file (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(508) relocation offset (*) out of range 0..*-*-1 (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(509) illegal relocation size: * (Linker)

There is an error in the object code format read by the linker. This either means you are using a linker that is out of date, or that there is an internal error in the assembler or linker. Contact Microchip Technical Support with details if the object file was created by the compiler.

(510) complex relocation not supported for -R or -L options (Linker)

The linker was given a -R or -L option with file that contain complex relocation.

(511) bad complex range check (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(512) unknown complex operator 0x* (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(513) bad complex relocation (Linker)

The linker has been asked to perform complex relocation that is not syntactically correct. Probably means an object file is corrupted.

(514) illegal relocation type: * (Linker)

An object file contained a relocation record with an illegal relocation type. This probably means the file is corrupted or not an object file. Contact Microchip Technical Support with details if the object file was created by the compiler.

(515) unknown symbol type * (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(516) text record has bad length: *-*-(*+1) < 0 (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(520) function “*” is never called (Linker)

This function is never called. This cannot represent a problem, but space could be saved by removing it. If you believe this function should be called, check your source code. Some assembler library routines are never called, although they are actually execute. In this case, the routines are linked in a special sequence so that program execution falls through from one routine to the next.

(521) call depth exceeded by function “*” (Linker)

The call graph shows that functions are nested to a depth greater than specified.

(522) library “*” is badly ordered (Linker)

This library is badly ordered. It will still link correctly, but it will link faster if better ordered.

(523) argument to -W option (*) illegal and ignored (Linker)

The argument to the linker option -w is out of range. This option controls two features. For warning levels, the range is -9 to 9. For the map file width, the range is greater than or equal to 10.

(524) unable to open list file “*”: * (Linker)

The named list file could not be opened. The linker would be trying to fixup the list file so that it will contain absolute addresses. Ensure that an assembler list file was generated during the compilation stage. Alternatively, remove the assembler list file generation option from the link step.

(525) too many address (memory) spaces; space (*) ignored (Linker)

The limit to the number of address spaces (specified with the PSECT assembler directive) is currently 16.

(526) psect “*” not specified in -P option (first appears in “*”) (Linker)

This psect was not specified in a -P or -A option to the linker. It has been linked at the end of the program, which is probably not where you wanted it.

(528) no start record; entry point defaults to zero (Linker)

None of the object files passed to the linker contained a start record. The start address of the program has been set to zero. This can be harmless, but it is recommended that you define a start address in your startup module by using the END directive.

(529) usage: objtohex [-Ssymfile] [object-file [HEX-file]] (Objtohex)

Improper usage of the command-line tool objtohex. If you are not invoking this tool directly, this is an internal compiler error, and you should contact Microchip Technical Support with details.

(593) can’t find 0x* words (0x* withtotal) for psect “*” in segment “*” (Linker)

See message (491).

(594) undefined symbol: (Linker)

The symbol following is undefined at link time. This could be due to spelling error, or failure to link an appropriate module.

(595) undefined symbols: (Linker)

A list of symbols follows that were undefined at link time. These errors could be due to spelling error, or failure to link an appropriate module.

(596) segment “*” (*-*) overlaps segment “*” (*-*) (Linker)

The named segments have overlapping code or data. Check the addresses being assigned by the -P linker option.

(599) No psect classes given for COFF write (Cromwell)

CROMWELL requires that the program memory psect classes be specified to produce a COFF file. Ensure that you are using the -N option.

(600) No chip arch given for COFF write (Cromwell)

CROMWELL requires that the chip architecture be specified to produce a COFF file. Ensure that you are using the -P option.

(601) Unknown chip arch “*” for COFF write (Cromwell)

The chip architecture specified for producing a COFF file isn’t recognized by 
CROMWELL. Ensure that you are using the -P option, and that the architecture is correctly specified.

(602) null file format name (Cromwell)

The -I or -O option to CROMWELL must specify a file format.

(603) ambiguous file format name “*” (Cromwell)

The input or output format specified to CROMWELL is ambiguous. These formats are specified with the -i key and -o key options respectively.

(604) unknown file format name “*” (Cromwell)

The output format specified to CROMWELL is unknown, for example:
cromwell -m -P16F877 main.HEX main.sym -ocot

There is no output file type of cot. Did you mean cof?

(605) did not recognize format of input file (Cromwell)

The input file to CROMWELL is required to have a Cromwell map file (CMF), COD, Intel HEX, Motorola HEX, COFF, OMF51, ELF, UBROF or HI-TECH format.

(606) inconsistent symbol tables (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(607) inconsistent line number tables (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(608) bad path specification (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(609) missing device spec after -P (Cromwell)

The -p option to CROMWELL must specify a device name.

(610) missing psect classes after -N (Cromwell)

CROMWELL requires that the -N option be given a list of the names of psect classes.

(611) too many input files (Cromwell)

To many input files have been specified to be converted by CROMWELL.

(612) too many output files (Cromwell)

To many output file formats have been specified to CROMWELL.

(613) no output file format specified (Cromwell)

The output format must be specified to CROMWELL.

(614) no input files specified (Cromwell)

CROMWELL must have an input file to convert.

(616) option -Cbaseaddr is illegal with options -R or -L (Linker)

The linker option -Cbaseaddr cannot be used in conjunction with either the -R or -L linker options.

(618) error reading COD file data (Cromwell)

An error occurred reading the input COD file. Confirm the spelling and path of the file specified on the command line.

(619) I/O error reading symbol table (Cromwell)

The COD file has an invalid format in the specified record.

(620) filename index out of range in line number record (Cromwell)

The COD file has an invalid value in the specified record.

(621) error writing ELF/DWARF section “*” on “*” (Cromwell)

An error occurred writing the indicated section to the given file. Confirm the spelling and path of the file specified on the command line.

(622) too many type entries (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(623) bad class in type hashing (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(624) bad class in type compare (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(625) too many files in COFF file (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(626) string lookup failed in COFF: get_string() (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(627) missing “*” in SDB file “*” line * column * (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(629) bad storage class “*” in SDB file “*” line * column * (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(630) invalid syntax for prefix list in SDB file “*” (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(631) syntax error at token “*” in SDB file “*” line * column * (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(632) can’t handle address size (*) (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(633) unknown symbol class (*) (Cromwell)

CROMWELL has encountered a symbol class in the symbol table of a COFF, Microchip COFF, or ICOFF file which it cannot identify.

(634) error dumping “*” (Cromwell)

Either the input file to CROMWELL is of an unsupported type or that file cannot be dumped to the screen.

(635) invalid HEX file “*” on line * (Cromwell)

The specified HEX file contains an invalid line. Contact Microchip Technical Support if the HEX file was generated by the compiler.

(636) error in Intel HEX file “*” on line * (Cromwell, Hexmate)

An error was found at the specified line in the specified Intel HEX file. The HEX file may be corrupt.

(637) unknown prefix “*” in SDB file “*” (Cromwell)

This is an internal compiler warning. Contact Microchip Technical Support with details.

(638) version mismatch: 0x* expected (Cromwell)

The input Microchip COFF file wasn’t produced using CROMWELL.

(639) zero bit width in Microchip optional header (Cromwell)

The optional header in the input Microchip COFF file indicates that the program or data memory spaces are zero bits wide.

(668) prefix list did not match any SDB types (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(669) prefix list matched more than one SDB type (Cromwell)

This is an internal compiler error. Contact Microchip Technical Support with details.

(670) bad argument to -T (Clist)

The argument to the -T option to specify tab size was not present or correctly formed. The option expects a decimal integer argument.

(671) argument to -T should be in range 1 to 64 (Clist)

The argument to the -T option to specify tab size was not in the expected range. The option expects a decimal integer argument ranging from 1 to 64 inclusive.

(673) missing filename after * option (Objtohex)

The indicated option requires a valid file name. Ensure that the filename argument supplied to this option exists and is spelled correctly.

(674) too many references to “*” (Cref)

This is an internal compiler error. Contact Microchip Technical Support with details.

(679) unknown extraspecial: * (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(680) bad format for -P option (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(681) bad common spec in -P option (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(685) bad putwsize() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(686) bad switch size (*) (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(687) bad pushreg “*” (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(688) bad popreg “*” (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(689) unknown predicate “*” (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(691) interrupt functions not implemented for 12 bit PIC MCU (Code Generator)

The 12-bit (Baseline) range of PIC MCU processors do not support interrupts.

(692) more than one interrupt level is associated with the interrupt function “*” 
 (Code Generator)

Only one interrupt level can be associated with an interrupt function. Check to ensure that only one interrupt_level pragma has been used with the function specified. This pragma can be used more than once on main-line functions that are called from interrupt functions. For example:
#pragma interrupt_level 0
#pragma interrupt_level 1  /* oops -- which is it to be: 0 or 1? */
void interrupt isr(void)
{

(693) 0 (default) or 1 are the only acceptable interrupt levels for this function 
 (Code Generator)

The only possible interrupt levels are 0 or 1. Check to ensure that all interrupt_level pragmas use these levels.
#pragma interrupt_level 2  /* oops -- only 0 or 1 */
void interrupt isr(void)
{
    /* isr code goes here */
}

(694) no interrupt strategy available (Code Generator)

The device does not support saving and subsequent restoring of registers during an interrupt service routine.

(695) duplicate case label (*) (Code Generator)

There are two case labels with the same value in this switch statement, for example:
switch(in) {
case ’0’:  /* if this is case ’0’... */
    b++;
    break;
case ’0’:  /* then what is this case? */
    b--;
    break;
}

(696) out-of-range case label (*) (Code Generator)

This case label is not a value that the controlling expression can yield, thus this label will never be selected.

(697) non-constant case label (Code Generator)

A case label in this switch statement has a value which is not a constant.

(698) bit variables must be global or static (Code Generator)

A __bit variable cannot be of type auto. If you require a bit variable with scope local to a block of code or function, qualify it static, for example:
bit proc(int a)
{
    bit bb;        /* oops --  this should be: static bit bb; */
    bb = (a > 66);
    return bb;
}

(699) no case labels in switch (Code Generator)

There are no case labels in this switch statement, for example:
switch(input) {
}               /* there is nothing to match the value of input */

(700) truncation of enumerated value (Code Generator)

An enumerated value larger than the maximum value supported by this compiler was detected and has been truncated, for example:
enum { ZERO, ONE, BIG=0x99999999 } test_case;

(701) unreasonable matching depth (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(702) regused(): bad arg to G (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(703) bad GN (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(704) bad RET_MASK (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(705) bad which (*) after I (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(706) bad which in expand() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(707) bad SX (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(708) bad mod “+” for how = “*” (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(709) metaregister “*” can’t be used directly (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(710) bad U usage (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(711) bad how in expand() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(712) can’t generate code for this expression (Code Generator)

This error indicates that a C expression is too difficult for the code generator to actually compile. For successful code generation, the code generator must know how to compile an expression and there must be enough resources (i.e., registers or temporary memory locations) available. Simplifying the expression, i.e., using a temporary variable to hold an intermediate result, can often bypass this situation.

This error can also be issued if the code being compiled is unusual. For example, code which writes to a const-qualified object is illegal and will result in warning messages, but the code generator can unsuccessfully try to produce code to perform the write.

This error can also result from an attempt to redefine a function that uses the intrinsic pragma.

(713) bad initialization list (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(714) bad intermediate code (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(715) bad pragma “*” (Code Generator)

The code generator has been passed a pragma directive that it does not understand. This implies that the pragma you have used is not implemented for the target device.

(716) bad argument to -M option “*” (Code Generator)

The code generator has been passed a -M option that it does not understand. This should not happen if it is being invoked by a standard compiler driver.

(718) incompatible intermediate code version; should be *.* (Code Generator)

The intermediate code file produced by P1 is not the correct version for use with this code generator. This is either that incompatible versions of one or more compilers have been installed in the same directory, or a temporary file error has occurred leading to corruption of a temporary file. Check the setting of the TEMP environment variable. If it refers to a long path name, change it to something shorter. Contact Microchip Technical Support with details if required.

(720) multiple free: * (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(721) element count must be constant expression (Code Generator)

The expression that determines the number of elements in an array must be a constant expression. Variables qualified as const do not form such an expression.
const unsigned char mCount = 5;
int mDeadtimeArr[mCount];  // oops -- the size cannot be a variable

(722) bad variable syntax in intermediate code (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(723) function definitions nested too deep (Code Generator)

This error is unlikely to happen with C code, because C cannot have nested functions! Contact Microchip Technical Support with details.

(724) bad op (*) in revlog() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(726) bad op “*” in uconval() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(727) bad op “*” in bconfloat() (Code Generator)

This is an internal code generator error. Contact Microchip Technical Support with details.

(728) bad op “*” in confloat() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(729) bad op “*” in conval() (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(730) bad op “*” ( Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(731) expression error with reserved word (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(732) initialization of bit types is illegal (Code Generator)

Variables of type __bit cannot be initialized, for example:
__bit b1 = 1; /* oops!  b1 must be assigned after its definition */

(733) bad string “*” in pragma “psect” (Code Generator)

The code generator has been passed a #pragma psect directive that has a badly formed string, for example:
#pragma psect text  /* redirect text psect into what? */

Possibly, you meant something like:

#pragma psect text=special_text

(734) too many “psect” pragmas (Code Generator)

Too many #pragma psect directives have been used.

(735) bad string “*” in pragma “stack_size” (Code Generator)

The argument to the stack_size pragma is malformed. This pragma must be followed by a number representing the maximum allowed stack size.

(737) unknown argument “*” to pragma “switch” (Code Generator)

The #pragma switch directive has been used with an invalid switch code generation method. Possible arguments are: auto, simple and direct.

(739) error closing output file (Code Generator)

The compiler detected an error when closing a file. Contact Microchip Technical Support with details.

(740) zero dimension array is illegal (Code Generator)

The code generator has been passed a declaration that results in an array having a zero dimension.

(741) bitfield too large (* bits) (Code Generator)

The maximum number of bits in a bit-field is 8, the same size as the storage unit width.
struct {
    unsigned flag  : 1;
    unsigned value : 12;  /* oops -- that’s larger than 8 bits wide */
    unsigned cont  : 6;
} object;

(742) function “*” argument evaluation overlapped (Linker)

A function call involves arguments which overlap between two functions. This could occur with a call like:
void fn1(void)
{
    fn3( 7, fn2(3), fn2(9));    /* Offending call */
}
char fn2(char fred)
{
    return fred + fn3(5,1,0);
}
char fn3(char one, char two, char three)
{
    return one+two+three;
}

where fn1 is calling fn3 , and two arguments are evaluated by calling fn2 , which in turn calls fn3. The program structure should be modified to prevent this type of call sequence.

(743) divide by zero (Code Generator)

An expression involving a division by zero has been detected in your code.

(744) static object “*” has zero size (Code Generator)

A static object has been declared, but has a size of zero.

(745) nodecount = * (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(746) object “*” qualified const but not initialized (Code Generator)

An object has been qualified as const, but there is no initial value supplied at the definition. As this object cannot be written by the C program, this can imply the initial value was accidentally omitted.

(747) unrecognized option “*” to -Z (Code Generator)

This is an internal compiler error. Contact Microchip Technical Support with details.

(748) variable “*” possibly used before being assigned a value (Code Generator)

This variable has possibly been used before it was assigned a value. Because it is an auto variable, this will result in it having an unpredictable value, for example:
int main(void)
{
    int a;
    if(a)         /* oops -- ’a’ has never been assigned a value */
        process();
}

(749) unknown register name “*” used with pragma (Linker)

This is an internal compiler error. Contact Microchip Technical Support with details.

(750) constant operand to || or && (Code Generator)

One operand to the logical operators || or && is a constant. Check the expression for missing or badly placed parentheses. This message can also occur if the global optimizer is enabled and one of the operands is an auto or static local variable whose value has been tracked by the code generator, for example:
{
    int a;
    a = 6;
    if(a || b)  /* a is 6, therefore this is always true */
        b++;

(751) arithmetic overflow in constant expression (Code Generator)

A constant expression has been evaluated by the code generator that has resulted in a value that is too big for the type of the expression. The most common code to trigger this warning is assignments to signed data types. For example:
signed char c;
c = 0xFF;

As a signed 8-bit quantity, c can only be assigned values -128 to 127. The constant is equal to 255 and is outside this range. If you mean to set all bits in this variable, then use either of:

c = ~0x0;
c = -1;

which sets all the bits in the variable, regardless of variable size and without warning.

This warning can also be triggered by intermediate values overflowing. For example:

unsigned int i;  /* assume ints are 16 bits wide */
i = 240 * 137;   /* this should be okay, right? */

A quick check with your calculator reveals that 240 * 137 is 32880 which can easily be stored in an unsigned int, but a warning is produced. Why? Because 240 and 137 and both signed int values. Therefore the result of the multiplication must also be a signed int value, but a signed int cannot hold the value 32880. Both operands are constant values so the code generator can evaluate this expression at compile time, but it must do so following all the ANSI C rules. The following code forces the multiplication to be performed with an unsigned result:

i = 240u * 137;  /* force at least one operand
to be unsigned */

(752) conversion to shorter data type (Code Generator)

Truncation can occur in this expression as the lvalue is of shorter type than the rvalue, for example:
char a;
int b, c;
a = b + c;  /* int to char conversion can result in truncation */

(753) undefined shift (* bits) (Code Generator)

An attempt has been made to shift a value by a number of bits equal to or greater than the number of bits in the data type. This will produce an undefined result on many processors. This is non-portable code and is flagged as having undefined results by the C Standard, for example:
int input;
input <<= 33;  /* oops -- that shifts the entire value out */

(754) bitfield comparison out of range (Code Generator)

This is the result of comparing a bit-field with a value when the value is out of range of the bit-field. That is, comparing a 2-bit bit-field to the value 5 will never be true as a 2-bit bit-field has a range from 0 to 3. For example:
struct {
    unsigned mask : 2;  /* mask can hold values 0 to 3 */
} value;
int compare(void)
{
    return (value.mask == 6);  /* test can
}

(755) divide by zero (Code Generator)

A constant expression that was being evaluated involved a division by zero, for example:
a /= 0;  /* divide by 0: was this what you were intending */

(757) constant conditional branch (Code Generator)

A conditional branch (generated by an if, for, while statement etc.) always follows the same path. This will be some sort of comparison involving a variable and a constant expression. For the code generator to issue this message, the variable must have local scope (either auto or static local) and the global optimizer must be enabled, possibly at higher level than 1, and the warning level threshold can need to be lower than the default level of 0.

The global optimizer keeps track of the contents of local variables for as long as is possible during a function. For C code that compares these variables to constants, the result of the comparison can be deduced at compile time and the output code hard coded to avoid the comparison, for example:

{
int a, b;
a = 5;
/* this can never be false; always perform the true statement */
if(a == 5)
    b = 6; 

will produce code that sets a to 5, then immediately sets b to 6.

No code will be produced for the comparison if(a == 5). If a was a global variable, it can be that other functions (particularly interrupt functions) can modify it and so tracking the variable cannot be performed.

This warning can indicate more than an optimization made by the compiler. It can indicate an expression with missing or badly placed parentheses, causing the evaluation to yield a value different to what you expected.

This warning can also be issued because you have written something like while(1). To produce an infinite loop, use for(;;).

A similar situation arises with for loops, for example:

{
int a, b;
/* this loop must iterate at least once */
for(a=0; a!=10; a++)
    b = func(a);

In this case the code generator can again pick up that a is assigned the value 0, then immediately checked to see if it is equal to 10. Because a is modified during the for loop, the comparison code cannot be removed, but the code generator will adjust the code so that the comparison is not performed on the first pass of the loop; only on the subsequent passes. This cannot reduce code size, but it will speed program execution.

(758) constant conditional branch: possible use of “=” instead of “==” (Code Generator)

There is an expression inside an if or other conditional construct, where a constant is being assigned to a variable. This can mean you have inadvertently used an assignment = instead of a compare ==, for example:
int a, b;
/* this can never be false; always perform the true statement */
if(a = 4)
    b = 6;

will assign the value 4 to a, then , as the value of the assignment is always true, the comparison can be omitted and the assignment to b always made. Did you mean:

/* this can never be false;
always perform the true statement */
if(a == 4)
    b = 6;

which checks to see if a is equal to 4.

(759) expression generates no code (Code Generator)

This expression generates no output code. Check for things like leaving off the parentheses in a function call, for example:
int fred;
fred;     /* this is valid, but has no effect at all */

Some devices require that special function register need to be read to clear hardware flags. To accommodate this, in some instances the code generator does produce code for a statement which only consists of a variable ID. This can happen for variables which are qualified as volatile. Typically the output code will read the variable, but not do anything with the value read.

(760) portion of expression has no effect (Code Generator)

Part of this expression has no side effects and no effect on the value of the expression, for example:
int a, b, c;
a = b,c;  /* "b" has no effect, was that meant to be a comma? */

(761) size of yields 0 (Code Generator)

The code generator has taken the size of an object and found it to be zero. This almost certainly indicates an error in your declaration of a pointer; i.e., you can have declared a pointer to a zero length array. In general, pointers to arrays are of little use. If you require a pointer to an array of objects of unknown length, you only need a pointer to a single object that can then be indexed or incremented.

(762) constant truncated when assigned to bitfield (Code Generator)

A constant value is too large for a bit-field structure member to which it is being assigned, for example:
struct INPUT {
    unsigned a : 3;
    unsigned b : 5;
} input_grp;
input_grp.a = 0x12;  /* oops -- 0x12 cannot fit into a 3-bit wide object */

(763) constant left operand to “? :” operator (Code Generator)

The left operand to a conditional operator ? is constant, thus the result of the tertiary operator ? : will always be the same, for example:
a = 8 ? b : c;  /* this is the same as saying a = b; */

(764) mismatched comparison (Code Generator)

A comparison is being made between a variable or expression and a constant value which is not in the range of possible values for that expression, for example:
unsigned char c;
if(c > 300)      /* oops -- how can this be true? */
    close();

(765) degenerate unsigned comparison (Code Generator)

There is a comparison of an unsigned value with zero, which will always be true or false, for example:
unsigned char c;
if(c >= 0)
    ...

will always be true, because an unsigned value can never be less than zero.

(766) degenerate signed comparison (Code Generator)

There is a comparison of a signed value with the most negative value possible for this type, such that the comparison will always be true or false, for example:
char c;
if(c >= -128)
    ...

will always be true, because an 8 bit signed char has a maximum negative value of -128.

(767) constant truncated to bitfield width (Code Generator)

A constant value is too large for a bit-field structure member on which it is operating, for example:
struct INPUT {
    unsigned a : 3;
    unsigned b : 5;
} input_grp;
input_grp.a |= 0x13;   /* oops -- 0x13 to large for 3-bit wide object */

(768) constant relational expression (Code Generator)

There is a relational expression that will always be true or false. This, for example, can be the result of comparing an unsigned number with a negative value; or comparing a variable with a value greater than the largest number it can represent, for example:
unsigned int a;
if(a == -10)    /* if a is unsigned, how can it be -10? */
b = 9;

(769) no space for macro definition (Assembler)

The assembler has run out of memory.

(772) include files nested too deep (Assembler)

Macro expansions and include file handling have filled up the assembler’s internal stack. The maximum number of open macros and include files is 30.

(773) macro expansions nested too deep (Assembler)

Macro expansions in the assembler are nested too deep. The limit is 30 macros and include files nested at one time.

(774) too many macro parameters (Assembler)

There are too many macro parameters on this macro definition.

(776) can’t allocate space for object “*” (offs: *) (Assembler)

The assembler has run out of memory.

(777) can’t allocate space for opnd structure within object “*” (offs: *) (Assembler)

The assembler has run out of memory.

(780) too many psects defined (Assembler)

There are too many psects defined! Boy, what a program!

(781) can’t enter abs psect (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(782) REMSYM error (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(783) “with” psects are cyclic (Assembler)

If Psect A is to be placed “with” Psect B, and Psect B is to be placed “with” Psect A, there is no hierarchy. The with flag is an attribute of a psect and indicates that this psect must be placed in the same memory page as the specified psect.

Remove a with flag from one of the psect declarations. Such an assembler declaration can look like:

psect my_text,local,class=CODE,with=basecode

which will define a psect called my_text and place this in the same page as the psect basecode.

(784) overfreed (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(785) too many temporary labels (Assembler)

There are too many temporary labels in this assembler file. The assembler allows a maximum of 2000 temporary labels.

(787) can’t handle “v_rtype” of * in copyexpr (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(788) invalid character “*” in number (Assembler)

A number contained a character that was not part of the range 0-9 or 0-F.

(790) end of file inside conditional (Assembler)

END-of-FILE was encountered while scanning for an endif to match a previous if.

(793) unterminated macro argument (Assembler)

An argument to a macro is not terminated. Note that angle brackets, < >, are used to quote macro arguments.

(794) invalid number syntax (Assembler)

The syntax of a number is invalid. This, for example, can be use of 8 or 9 in an octal number, or other malformed numbers.

(796) use of LOCAL outside macros is illegal (Assembler)

The LOCAL directive is only legal inside macros. It defines local labels that will be unique for each invocation of the macro.

(797) syntax error in LOCAL argument (Assembler)

A symbol defined using the LOCAL assembler directive in an assembler macro is syntactically incorrect. Ensure that all symbols and all other assembler identifiers conform with the assembly language of the target device.

(798) use of macro arguments in a LOCAL directive is illegal (Assembler)

The list of labels after the directive LOCAL cannot include any of the formal parameters to an enclosing macro, for example:
mmm MACRO a1
MOVE		r0, #a1
LOCAL		a1	; oops -- the parameter cannot be used with LOCAL
ENDM

(799) REPT argument must be >= 0 (Assembler)

The argument to a REPT directive must be greater than zero, for example:
REPT -2						; -2 copies of this code? */
MOVE			r0, [r1]++
ENDM

(800) undefined symbol “*” (Assembler)

The named symbol is not defined in this module and has not been specified GLOBAL.

(801) range check too complex (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(802) invalid address after END directive (Assembler)

The start address of the program which is specified after the assembler END directive must be a label in the current file.

(803) undefined temporary label (Assembler)

A temporary label has been referenced that is not defined. Note that a temporary label must have a number >= 0.

(804) write error on object file (Assembler)

The assembler failed to write to an object file. This can be an internal compiler error. Contact Microchip Technical Support with details.

(806) attempted to get an undefined object (*) (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(807) attempted to set an undefined object (*) (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(808) bad size in add_reloc() (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(809) unknown addressing mode (*) (Assembler)

An unknown addressing mode was used in the assembly file.

(811) “cnt” too large (*) in display() (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(814) device type not defined (Assembler)

The device must be defined either from the command line (e.g., -16c84), via the device assembler directive, or via the LIST assembler directive.

(815) syntax error in chipinfo file at line * (Assembler)

The chipinfo file contains non-standard syntax at the specified line.

(816) duplicate ARCH specification in chipinfo file “*” at line * 
 (Assembler, Driver)

The chipinfo file has a device section with multiple ARCH values. Only one ARCH value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(817) unknown architecture in chipinfo file at line * (Assembler, Driver)

An chip architecture (family) that is unknown was encountered when reading the chip INI file.

(818) duplicate BANKS for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple BANKS values. Only one BANKS value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(819) duplicate ZEROREG for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple ZEROREG values. Only one ZEROREG value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(820) duplicate SPAREBIT for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple SPAREBIT values. Only one SPAREBIT value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(821) duplicate INTSAVE for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple INTSAVE values. Only one INTSAVE value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(822) duplicate ROMSIZE for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple ROMSIZE values. Only one ROMSIZE value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(823) duplicate START for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple START values. Only one START value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(824) duplicate LIB for “*” in chipinfo file at line * (Assembler)

The chipinfo file has a device section with multiple LIB values. Only one LIB value is allowed. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(825) too many RAMBANK lines in chipinfo file for “*” (Assembler)

The chipinfo file contains a device section with too many RAMBANK fields. Reduce the number of values.

(826) inverted ram bank in chipinfo file at line * (Assembler, Driver)

The second HEX number specified in the RAM field in the chipinfo file must be greater in value than the first.

(827) too many COMMON lines in chipinfo file for “*” (Assembler)

There are too many lines specifying common (access bank) memory in the chip configuration file.

(828) inverted common bank in chipinfo file at line * (Assembler, Driver)

The second HEX number specified in the COMMON field in the chipinfo file must be greater in value than the first. Contact Microchip Technical Support if you have not modified the chipinfo INI file.

(829) unrecognized line in chipinfo file at line * (Assembler)

The chipinfo file contains a device section with an unrecognized line. Contact Microchip Technical Support if the INI has not been edited.

(830) missing ARCH specification for “*” in chipinfo file (Assembler)

The chipinfo file has a device section without an ARCH values. The architecture of the device must be specified. Contact Microchip Technical Support if the chipinfo file has not been modified.

(832) empty chip info file “*” (Assembler)

The chipinfo file contains no data. If you have not manually edited the chip info file, contact Microchip Technical Support with details.

(833) no valid entries in chipinfo file (Assembler)

The chipinfo file contains no valid device descriptions.

(834) page width must be >= 60 (Assembler)

The listing page width must be at least 60 characters. Any less will not allow a properly formatted listing to be produced, for example:
LIST C=10  ; the page width will need to be wider than this

(835) form length must be >= 15 (Assembler)

The form length specified using the -F length option must be at least 15 lines. Setting this length to zero is allowed and turns off paging altogether. The default value is zero (pageless).

(836) no file arguments (Assembler)

The assembler has been invoked without any file arguments. It cannot assemble anything.

(839) relocation too complex (Assembler)

The complex relocation in this expression is too big to be inserted into the object file.

(840) phase error (Assembler)

The assembler has calculated a different value for a symbol on two different passes. This is commonly due to the redefinition of a psect with conflicting delta values.

(841) bad source/destination for movfp/movpf instruction (Assembler)

The absolute address specified with the movfp/movpf instruction is too large.

(842) bad bit number (Assembler)

A bit number must be an absolute expression in the range 0-7.

(843) a macro name can’t also be an EQU/SET symbol (Assembler)

An EQU or SET symbol has been found with the same name as a macro. This is not allowed. For example:
getval MACRO
MOV  r0, r1
ENDM
getval EQU 55h  ; oops -- choose a different name to the macro

(844) lexical error (Assembler)

An unrecognized character or token has been seen in the input.

(845) symbol “*” defined more than once (Assembler)

This symbol has been defined in more than one place. The assembler will issue this error if a symbol is defined more than once in the same module, for example:
_next:
MOVE		r0, #55
MOVE		[r1], r0
_next:           ; oops -- choose a different name

The linker will issue this warning if the symbol (C or assembler) was defined multiple times in different modules. The names of the modules are given in the error message. Note that C identifiers often have an underscore prepended to their name after compilation.

(846) relocation error (Assembler)

It is not possible to add together two relocatable quantities. A constant can be added to a relocatable value and two relocatable addresses in the same psect can be subtracted. An absolute value must be used in various places where the assembler must know a value at assembly time.

(847) operand error (Assembler)

The operand to this opcode is invalid. Check your assembler reference manual for the proper form of operands for this instruction.

(848) label defined in this module has also been declared EXTRN (Assembler)

The definition for an assembly label and an EXTRN declaration for the same symbol, appear in the same module. Use GLOBAL instead of EXTRN if you want this symbol to be accessible from other modules.

(849) illegal instruction for this device (Assembler)

The instruction is not supported by this device.

(850) PAGESEL not usable with this device (Assembler)

The PAGESEL pseudo-instruction is not usable with the device selected.

(851) illegal destination (Assembler)

The destination (either ,f or ,w ) is not correct for this instruction.

(852) radix must be from 2 - 16 (Assembler)

The radix specified using the RADIX assembler directive must be in the range from 2 (binary) to 16 (hexadecimal).

(853) invalid size for FNSIZE directive (Assembler)

The assembler FNSIZE assembler directive arguments must be positive constants.

(855) ORG argument must be a positive constant (Assembler)

An argument to the ORG assembler directive must be a positive constant or a symbol which has been equated to a positive constant, for example:
ORG -10  /* this must a positive offset to the current psect */

(856) ALIGN argument must be a positive constant (Assembler)

The ALIGN assembler directive requires a non-zero positive integer argument.

(857) use of both local and global psect flags is illegal with same psect (Linker)

A local psect cannot have the same name as a global psect, for example:
psect text,class=CODE       ; the text psect is implicitly global
MOVE		r0, r1
; elsewhere:
psect text,local,class=CODE
MOVE		r2, r4

The global flag is the default for a psect if its scope is not explicitly stated.

(859) argument to C option must specify a positive constant (Assembler)

The parameter to the LIST assembler control’s C= option (which sets the column width of the listing output) must be a positive decimal constant number, for example:
LIST C=a0h  ; constant must be decimal and positive,
try: LIST C=80

(860) page width must be >= 49 (Assembler)

The page width suboption to the LIST assembler directive must specify a width of at least 49.

(861) argument to N option must specify a positive constant (Assembler)

The parameter to the LIST assembler control’s N option (which sets the page length for the listing output) must be a positive constant number, for example:
LIST N=-3  ; page length must be positive

(862) symbol is not external (Assembler)

A symbol has been declared as EXTRN but is also defined in the current module.

(863) symbol can’t be both extern and public (Assembler)

If the symbol is declared as extern, it is to be imported. If it is declared as public, it is to be exported from the current module. It is not possible for a symbol to be both.

(864) argument to “size” psect flag must specify a positive constant (Assembler)

The parameter to the PSECT assembler directive’s size flag must be a positive constant number, for example:
PSECT text,class=CODE,size=-200  ; a negative size?

(865) psect flag “size” redefined (Assembler)

The size flag to the PSECT assembler directive is different from a previous PSECT directive, for example:
psect spdata,class=RAM,size=400
; elsewhere:
psect spdata,class=RAM,size=500

(866) argument to “reloc” psect flag must specify a positive constant (Assembler)

The parameter to the PSECT assembler directive’s reloc flag must be a positive constant number, for example:
psect test,class=CODE,reloc=-4  ; the reloc must be positive

(867) psect flag “reloc” redefined (Assembler)

The reloc flag to the PSECT assembler directive is different from a previous PSECT directive, for example:
psect spdata,class=RAM,reloc=4
; elsewhere:
psect spdata,class=RAM,reloc=8

(868) argument to “delta” psect flag must specify a positive constant (Assembler)

The parameter to the PSECT assembler directive’s DELTA flag must be a positive constant number, for example:
PSECT text,class=CODE,delta=-2  ; negative delta value doesn’t make sense

(869) psect flag “delta” redefined (Assembler)

The DELTA option of a psect has been redefined more than once in the same module.

(870) argument to “pad” psect flag must specify a positive constant (Assembler)

The parameter to the PSECT assembler directive’s PAD flag must be a non-zero positive integer.

(871) argument to “space” psect flag must specify a positive constant (Assembler)

The parameter to the PSECT assembler directive’s space flag must be a positive constant number, for example:
PSECT text,class=CODE,space=-1  ; space values start at zero

(872) psect flag “space” redefined (Assembler)

The space flag to the PSECT assembler directive is different from a previous PSECT directive, for example:
psect spdata,class=RAM,space=0
; elsewhere:
psect spdata,class=RAM,space=1

(873) a psect can only be in one class (Assembler)

You cannot assign a psect to more than one class. The psect was defined differently at this point than when it was defined elsewhere. A psect’s class is specified via a flag as in the following:
psect text,class=CODE

Look for other psect definitions that specify a different class name.

(874) a psect can only have one “with” option (Assembler)

A psect can only be placed with one other psect. Look for other psect definitions that specify a different with psect name. A psect’s with option is specified via a flag, as shown in the following:
psect bss,with=data
; elsewhere
psect bss,with=lktab  ; oops -- bss is to be linked with two psects

(875) bad character constant in expression (Assembler)

The character constant was expected to consist of only one character, but was found to be greater than one character or none at all. An assembler specific example:
MOV  r0, #’12’    ; ’12’ specifies two characters

(876) syntax error (Assembler)

A syntax error has been detected. This could be caused a number of things.

(877) yacc stack overflow (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(878) -S option used: “*” ignored (Driver)

The indicated assembly file has been supplied to the driver in conjunction with the -S option. The driver really has nothing to do because the file is already an assembly file.

(880) invalid number of parameters. Use “* –HELP” for help (Driver)

Improper command-line usage of the of the compiler’s driver.

(881) setup succeeded (Driver)

The compiler has been successfully setup using the --setup driver option.

(883) setup failed (Driver)

The compiler was not successfully setup using the --setup driver option. Ensure that the directory argument to this option is spelled correctly, is syntactically correct for your host operating system and it exists.

(884) please ensure you have write permissions to the configuration file (Driver)

The compiler was not successfully setup using the --setup driver option because the driver was unable to access the XML configuration file. Ensure that you have write permission to this file. The driver will search the following configuration files in order:
  • the file specified by the environment variable XC_XML
  • the file /etc/xc.xml if the directory ’/etc ’ is writable and there is no .xc.xml file in your home directory
  • the file .xc.xml file in your home directory

If none of the files can be located, then the above error will occur.

(889) this * compiler has expired (Driver)

The demo period for this compiler has concluded.

(890) contact Microchip to purchase and re-activate this compiler (Driver)

The evaluation period of this demo installation of the compiler has expired. You will need to purchase the compiler to re-activate it. If you sincerely believe the evaluation period has ended prematurely, contact Microchip technical support.

(891) can’t open psect usage map file “*”: * (Driver)

The driver was unable to open the indicated file. The psect usage map file is generated by the driver when the driver option --summary=file is used. Ensure that the file is not open in another application.

(892) can’t open memory usage map file “*”: * (Driver)

The driver was unable to open the indicated file. The memory usage map file is generated by the driver when the driver option --summary=file is used. Ensure that the file is not open in another application.

(893) can’t open HEX usage map file “*”: * (Driver)

The driver was unable to open the indicated file. The HEX usage map file is generated by the driver when the driver option --summary=file is used. Ensure that the file is not open in another application.

(894) unknown source file type “*” (Driver)

The extension of the indicated input file could not be determined. Only files with the extensions .as, .c, .obj, .usb, .p1, .lib or .hex are identified by the driver.

(895) can’t request and specify options in the one command (Driver)

The usage of the driver options --getoption and --setoption is mutually exclusive.

(896) no memory ranges specified for data space (Driver)

No on-chip or external memory ranges have been specified for the data space memory for the device specified.

(897) no memory ranges specified for program space (Driver)

No on-chip or external memory ranges have been specified for the program space memory for the device specified.

(899) can’t open option file “*” for application “*”: * (Driver)

An option file specified by a --getoption or --setoption driver option could not be opened. If you are using the --setoption option, ensure that the name of the file is spelled correctly and that it exists. If you are using the --getoption option ensure that this file can be created at the given location or that it is not in use by any other application.

(900) exec failed: * (Driver)

The subcomponent listed failed to execute. Does the file exist? Try re-installing the compiler.

(902) no chip name specified; use “* –CHIPINFO” to see available chip names (Driver)

The driver was invoked without selecting what chip to build for. Running the driver with the –CHIPINFO option will display a list of all chips that could be selected to build for.

(904) illegal format specified in “*” option (Driver)

The usage of this option was incorrect. Confirm correct usage with --help or refer to the part of the manual that discusses this option.

(905) illegal application specified in “*” option (Driver)

The application given to this option is not understood or does not belong to the compiler.

(907) unknown memory space tag “*” in “*” option specification (Driver)

A parameter to this memory option was a string but did not match any valid tags. Refer to the section of this manual that describes this option to see what tags (if any) are valid for this device.

(908) exit status = * (Driver)

One of the subcomponents being executed encountered a problem and returned an error code. Other messages should have been reported by the subcomponent to explain the problem that was encountered.

(913) “*” option can cause compiler errors in some standard header files (Driver)

Using this option will invalidate some of the qualifiers used in the standard header files, resulting in errors. This issue and its solution are detailed in the section of this manual that specifically discusses this option.

(915) no room for arguments (Preprocessor, Parser, Code Generator, Linker, Objtohex)

The code generator could not allocate any more memory.

(917) argument too long (Preprocessor, Parser)

This is an internal compiler error. Contact Microchip Technical Support with details.

(918) *: no match (Preprocessor, Parser)

This is an internal compiler error. Contact Microchip Technical Support with details.

(919) * in chipinfo file “*” at line * (Driver)

The specified parameter in the chip configuration file is illegal.

(920) empty chipinfo file (Driver, Assembler)

The chip configuration file was able to be opened but it was empty. Try re-installing the compiler.

(922) chip “*” not present in chipinfo file “*” (Driver)

The chip selected does not appear in the compiler’s chip configuration file. Contact Microchip to see whether support for this device is available or it is necessary to upgrade the version of your compiler.

(923) unknown suboption “*” (Driver)

This option can take suboptions, but this suboption is not understood. This can just be a simple spelling error. If not,--help to look up what suboptions are permitted here.

(924) missing argument to “*” option (Driver)

This option expects more data but none was given. Check the usage of this option.

(925) extraneous argument to “*” option (Driver)

This option does not accept additional data, yet additional data was given. Check the usage of this option.

(926) duplicate “*” option (Driver)

This option can only appear once, but appeared more than once.

(928) bad “*” option value (Driver, Assembler)

The indicated option was expecting a valid hexadecimal integer argument.

(929) bad “*” option ranges (Driver)

This option was expecting a parameter in a range format (start_of_range-end_of_range), but the parameter did not conform to this syntax.

(930) bad “*” option specification (Driver)

The parameters to this option were not specified correctly. Run the driver with --help or refer to the driver’s chapter in this manual to verify the correct usage of this option.

(931) command file not specified (Driver)

Command file to this application, expected to be found after ’@’ or ’<’ on the command line was not found.

(939) no file arguments (Driver)

The driver has been invoked with no input files listed on its command line. If you are getting this message while building through a third party IDE, perhaps the IDE could not verify the source files to compile or object files to link and withheld them from the command line.

(940) *-bit * placed at * (Objtohex)

Presenting the result of the requested calculation.

(941) bad “*” assignment; USAGE: ** (Hexmate)

An option to Hexmate was incorrectly used or incomplete. Follow the usage supplied by the message and ensure that the option has been formed correctly and completely.

(942) unexpected character on line * of file “*” (Hexmate)

File contains a character that was not valid for this type of file, the file can be corrupt. For example, an Intel HEX file is expected to contain only ASCII representations of hexadecimal digits, colons (:) and line formatting. The presence of any other characters will result in this error.

(944) data conflict at address *h between * and * (Hexmate)

Sources to Hexmate request differing data to be stored to the same address. To force one data source to override the other, use the ‘+’ specifier with that source. If the two named sources of conflict are the same source, then the source can contain an error.

(945) range (*h to *h) contained an indeterminate value (Hexmate)

The range for this calculation contained a value that could not be resolved. This can happen if the result was to be stored within the address range of the calculation.

(948) result width must be between 1 and 4 bytes (Hexmate)

The requested byte size is illegal. Checksum results must be within 1 to 4 bytes wide. Check the parameters to the -CK option.

(949) start of range must be less than end of range (Hexmate)

The -CK option has been given a range where the start is greater than the end. The parameters can be incomplete or entered in the wrong order.

(951) start of fill range must be less than end of range (Hexmate)

The -FILL option has been given a range where the start is greater than the end. The parameters can be incomplete or entered in the wrong order.

(953) unknown -HELP sub-option: * (Hexmate)

Invalid sub-option passed to -HELP. Check the spelling of the sub-option or use -HELP with no sub-option to list all options.

(956) -SERIAL value must be between 1 and * bytes long (Hexmate)

The serial number being stored was out of range. Ensure that the serial number can be stored in the number of bytes permissible by this option.

(958) too many input files specified; * file maximum (Hexmate)

Too many file arguments have been used. Try merging these files in several stages rather than in one command.

(960) unexpected record type (*) on line * of “*” (Hexmate)

Intel HEX file contained an invalid record type. Consult the Intel HEX format specification for valid record types.

(962) forced data conflict at address *h between * and * (Hexmate)

Sources to Hexmate force differing data to be stored to the same address. More than one source using the ‘+’ specifier store data at the same address. The actual data stored there cannot be what you expect.

(963) range includes voids or unspecified memory locations (Hexmate)

The hash (checksum) range had gaps in data content. The runtime hash calculated is likely to differ from the compile-time hash due to gaps/unused byes within the address range that the hash is calculated over. Filling unused locations with a known value will correct this.

(964) unpaired nibble in -FILL value will be truncated (Hexmate)

The hexadecimal code given to the -FILL option contained an incomplete byte. The incomplete byte (nibble) will be disregarded.

(965) -STRPACK option not yet implemented; option will be ignored (Hexmate)

This option currently is not available and will be ignored.

(966) no END record for HEX file “*” (Hexmate)

Intel HEX file did not contain a record of type END. The HEX file can be incomplete.

(967) unused function definition “*” (from line *) (Parser)

The indicated static function was never called in the module being compiled. Being static, the function cannot be called from other modules so this warning implies the function is never used. Either the function is redundant, or the code that was meant to call it was excluded from compilation or misspelled the name of the function.

(968) unterminated string (Assembler)

A string constant appears not to have a closing quote.

(969) end of string in format specifier (Parser)

The format specifier for the printf() style function is malformed.

(970) character not valid at this point in format specifier (Parser)

The printf() style format specifier has an illegal character.

(971) type modifiers not valid with this format (Parser)

Type modifiers cannot be used with this format.

(972) only modifiers “h” and “l” valid with this format (Parser)

Only modifiers h (short) and l (long) are legal with this printf format specifier.

(973) only modifier “l” valid with this format (Parser)

The only modifier that is legal with this format is l (for long).

(974) type modifier already specified (Parser)

This type modifier has already be specified in this type.

(975) invalid format specifier or type modifier (Parser)

The format specifier or modifier in the printf-style string is illegal for this particular format.

(976) field width not valid at this point (Parser)

A field width cannot appear at this point in a printf() type format specifier.

(978) this identifier is already an enum tag (Parser)

This identifier following a struct or union keyword is already the tag for an enumerated type, and thus should only follow the keyword enum, for example:
enum IN {ONE=1, TWO};
struct IN {             /* oops -- IN is already defined */
    int a, b;
};

(979) this identifier is already a struct tag (Parser)

This identifier following a union or enum keyword is already the tag for a structure and should only follow the keyword struct, for example:
struct IN {
    int a, b;
};
enum IN {ONE=1, TWO};  /* oops -- IN is already defined */

(980) this identifier is already a union tag (Parser)

This identifier following a struct or enum keyword is already the tag for a union and should only follow the keyword union, for example:
union IN {
    int a, b;
};
enum IN {ONE=1, TWO};  /* oops -- IN is already defined */

(981) pointer required (Parser)

A pointer is required here, for example:
struct DATA data;
data->a = 9;      /* data is a structure, not a pointer to a structure */

(982) unknown op “*” in nxtuse() (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(983) storage class redeclared (Parser)

A variable previously declared as being static , has now be redeclared as extern.

(984) type redeclared (Parser)

The type of this function or object has been redeclared. This can occur because of two incompatible declarations, or because an implicit declaration is followed by an incompatible declaration, for example:
int a;
char a;  /* oops -- what is the correct type? */

(985) qualifiers redeclared (Parser)

This function or variable has different qualifiers in different declarations.

(986) enum member redeclared (Parser)

A member of an enumeration is defined twice or more with differing values. Does the member appear twice in the same list or does the name of the member appear in more than one enum list?

(987) arguments redeclared (Parser)

The data types of the parameters passed to this function do not match its prototype.

(988) number of arguments redeclared (Parser)

The number of arguments in this function declaration does not agree with a previous declaration of the same function.

(989) module has code below file base of *h (Linker)

This module has code below the address given, but the -C option has been used to specify that a binary output file is to be created that is mapped to this address. This would mean code from this module would have to be placed before the beginning of the file! Check for missing psect directives in assembler files.

(990) modulus by zero in #if; zero result assumed (Preprocessor)

A modulus operation in a #if expression has a zero divisor. The result has been assumed to be zero, for example:
#define ZERO 0
#if FOO%ZERO    /* this will have an assumed result of 0 */
#define INTERESTING
#endif

(991) integer expression required (Parser)

In an enum declaration, values can be assigned to the members, but the expression must evaluate to a constant of type int, for example:
enum {one = 1, two, about_three = 3.12};
/* no non-int values allowed */

(992) can’t find op (Assembler)

This is an internal compiler error. Contact Microchip Technical Support with details.

(993) some command-line options are disabled (Driver)

The compiler is operating in demo mode. Some command-line options are disabled.

(994) some command-line options are disabled and compilation is delayed (Driver)

The compiler is operating in demo mode. Some command-line options are disabled, the compilation speed will be slower.

(995) some command-line options are disabled; code size is limited to 16kB, compilation is delayed (Driver)

The compiler is operating in demo mode. Some command-line options are disabled; the compilation speed will be slower, and the maximum allowed code size is limited to 16 KB.

(996) unknown relocation type (*) (Assembler)

While processing an assembly file, the assembler has encountered a relocatable operation in an expression that it does not know about. This is likely an internal error. Contact Microchip Technical Support with details.