This appendix contains a list of all warning and error messages produced by
the Watcom C compilers.
Diagnostic messages are issued during compilation and execution.
Consider the following program, named err.c, which contains
errors:
#include <stdio.h>
void main()
{
int i;
float i;
i = 383;
x = 13143.0;
printf( "Integer value is %d\n", i );
printf( "Floating-point value is %f\n", x );
}
If we compile the above program, the following messages appear on the screen:
err.c(6): Error! E1034: Symbol 'i' already defined
err.c(9): Error! E1011: Symbol 'x' has not been declared
err.c: 12 lines, included 191, 0 warnings, 2 errors
The diagnostic messages consist of the following information:
- the name of the file being compiled
- the line number of the line containing the error (in parentheses)
- a message number
- text explaining the nature of the error
In the above example, the first error occurred on line 6 of the file
err.c.
Error number 1034 (with the appropriate substitutions) was diagnosed.
The second error occurred on line 9 of the file
err.c.
Error number 1011 (with the appropriate substitutions) was diagnosed.
The following sections contain a complete list of the messages.
Runtime messages (that is, messages displayed during execution) don't have
message numbers associated with them.
Use this table to find a message quickly:
- W100 Parameter %d contains inconsistent
levels of indirection
- The function is expecting something like char **,
and it's being passed a char *, for instance.
- W101 Non-portable pointer conversion
- This message is issued whenever you convert a non-zero constant to a
pointer.
- W102 Type mismatch (warning)
- This message is issued for a function return value or an assignment
where both types are pointers, but they're pointers to different kinds
of objects.
- W103 Parameter count does not agree with previous
definition (warning)
- You have either not enough parameters or too many parameters in a call
to a function. If the function is supposed to have a variable number of
parameters, then you can ignore this warning, or you can change the
function declaration and prototypes to use the ,... to
indicate that the function indeed takes a variable number of parameters.
- W104 Inconsistent levels of indirection
- This occurs in an assignment or return statement when one of the
operands has more levels of indirection than the other operand.
For example, a char ** is being assigned to a
char *.
Solution: Correct the levels of indirection or use a
void *.
- W105 Assignment found in boolean expression
- An assignment of a constant has been detected in a boolean expression.
For example, if( var = 0 ).
It's most likely that you want to use == for testing for
equality.
- W106 Constant out of range - truncated
- This message is issued if a constant can't be represented in 32 bits,
or if a constant is outside the range of valid values
that can be assigned to a variable.
- W107 Missing return value for function
'%s'
- A function has been declared with a function return type, but no
return statement was found in the function. Either add a
return statement, or change the function return type to
void.
- W108 Duplicate typedef already defined
- A duplicate typedef isn't allowed in ANSI C.
This warning is issued when compiling with extensions enabled.
You should delete the duplicate typedef definition.
- W110 'fortran' pragma not defined
- You have used the fortran keyword in your program, but
haven't defined a #pragma for fortran.
- W111 Meaningless use of an expression
- The line contains an expression that does nothing useful.
In the example i = (1,5);, the expression
1, is meaningless.
- W112 Pointer truncated
- A far pointer is being passed to a function that is
expecting a near pointer, or a far pointer
is being assigned to a near pointer.
- W113 Pointer type mismatch
- You have two pointers that either point to different objects, or the
pointers are of different size, or they have different modifiers.
- W114 Missing semicolon
- You're missing the semicolon (;) on the field definition
just before the right curly brace (}).
- W115 &array may not produce intended result
- The type of the expression &array is different from
the type of the expression array.
Suppose we have the declaration char buffer[80];. Then the
expression (&buffer + 3) is evaluated as
(buffer + 3 * sizeof(buffer)), which is
(buffer + 3 * 80), and not (buffer + 3 * 1),
which is what most people expect to happen.
The address of operator & isn't required for getting
the address of an array.
- W116 Attempt to return address of auto variable
- This warning usually indicates a serious programming error.
When a function exits, the storage allocated on the stack for
auto variables is released.
This storage will be overwritten by further function calls
and/or hardware interrupt service routines.
Therefore, the data pointed to by the return value may be destroyed
before your program has a chance to reference it or make a copy of it.
- W117 '##' tokens did not generate a single token (rest
discarded)
- When two tokens are pasted together using the concatenation operator
(##), they must
form a string that can be parsed as a single token.
- W118 Label '%s' has been defined but
not referenced
- You have defined a label that isn't referenced in a goto
statement. It's possible that you're missing the case
keyword when using an enumerated type name as a case in a
switch statement. If not, then the label can be deleted.
- W119 Address of static function '%s'
has been taken
- This warning may indicate a potential problem when the program is
overlaid.
- W120 Using result of a cast operator as an lvalue is not
standard C
- A cast operation doesn't yield an lvalue in ANSI standard
C. However, to provide compatibility with code written prior to the
availability of ANSI standard C compilers, if an expression was an
lvalue prior to the
cast operation, and the cast operation doesn't cause any conversions, the
compiler treats the result as an lvalue and issues this
warning.
- W121 Text following pre-processor directives is not
standard C
- Arbitrary text isn't allowed following a pre-processor directive.
Only comments are allowed following a pre-processor directive.
- W122 Literal string too long for array - truncated
- The supplied literal string contains more characters than the specified
dimension of the array.
Either shorten the literal string, or increase the dimension of the array
to hold all of the characters from the literal string.
- W123 '//' style comment continues on next line
- The compiler has detected a line continuation during the processing
of a C++ style comment (//...). The warning can be removed
by switching to a C style comment (/* ... */). If you
require the
comment to be terminated at the end of the line, make sure that the
backslash character isn't the last character in the line.
For example,
#define XX 23 // comment start \
comment \
end
int x = XX; // comment start ...\
comment end
- W124 Comparison result always %d
- The comparison is always true or always false. For example,
comparing an unsigned expression to see if it's
>= 0 is always true; checking to see if it's
< 0 is always false. Check to see if the expression
should be signed instead of unsigned.
- W126 Const must be zero
- Zero is the only integer constant that you can assign to a pointer
or compare with a pointer. You can use typecasting to remove the
warning.
- W200 '%s' has been referenced but
never assigned a value
- You have used the variable in an expression without previously
assigning a value to that variable.
- W201 Unreachable code
- The statement will never be executed, because there's no path through
the program that causes control to reach this statement.
- W202 Symbol '%s' has been defined, but
not referenced
- There are no references to the declared variable;
its declaration can be deleted.
If the variable is a parameter to a function, all calls to the function
must also have the value for that parameter deleted.
In some cases, there may be a valid reason for retaining the variable.
You can prevent the message from being issued through use of
#pragma off(unreferenced).
- W203 Preprocessing symbol '%s' has not
been declared
- The symbol has been used in a preprocessor expression.
The compiler assumes the symbol has a value of 0 and continues.
A #define may be required for the symbol, or you may have
forgotten to include the file that contains a #define
for the symbol.
- W300 Nested comment found in comment started on line
%u
- While scanning a comment for its end, the compiler detected
/* for the start of another comment. Nested comments aren't
allowed in ANSI C. You may be missing the */ for the
previous comment.
- W301 No prototype found for '%s'
- A reference for a function appears in your program, but you don't
have a prototype for that function defined.
- W302 Expression is only useful for its side effects
- You have an expression that would have generated the warning
``Meaningless use of an expression'', except that it also
contains a side-effect, such as ++, --, or a
function call.
- W303 Parameter '%s' has been defined,
but not referenced
- There are no references to the declared parameter;
its declaration can be deleted. All calls to the function
must also have the value for that parameter deleted.
In some cases, there may be a valid reason for retaining the parameter.
|
This message is disabled by default. You can enable it in two ways:
- by using the enable_message pragma, described in the
section ``The ENABLE_MESSAGE Pragma'' of the following
chapters:
- by using the wce
compiler option
|
Use this table to find a message quickly:
- E1000 BREAK must appear in while, do, for or switch
statement
- A break statement has been found in an illegal place in
the program. You may be missing an opening brace ({) for a
while, do, for or
switch statement.
- E1001 CASE must appear in switch statement
- A case label has been found that isn't inside a
switch statement.
- E1002 CONTINUE must appear in while, do or for
statement
- The continue statement must be inside a
while,
do or for statement. You may have too many
right braces (}) between the while,
do or
for statement and the continue statement.
- E1003 DEFAULT must appear in switch statement
- A default label has been found that isn't inside a
switch statement. You may have too many right braces
(})
between the start of the switch and the default
label.
- E1004 Misplaced '}' or missing earlier '{'
- An extra right brace (}) has been found that can't be
matched up with an earlier left brace ({).
- E1005 Misplaced #elif directive
- The #elif directive must be inside an #if
preprocessing group and before the #else directive, if
present.
- E1006 Misplaced #else directive
- The #else directive must be inside an #if
preprocessing group and follow all #elif directives, if
present.
- E1007 Misplaced #endif directive
- A #endif preprocessing directive has been found without
a matching #if directive. You either have an extra
#endif or you're missing an #if directive
earlier in the file.
- E1008 Only 1 DEFAULT per switch allowed
- You can't have more than one default label in a
switch statement.
- E1009 Expecting '%s' but found
'%s'
- A syntax error has been detected. The tokens displayed in the message
should help you to determine the problem.
- E1010 Type mismatch
- For pointer subtraction, both pointers must point to the same type.
For other operators, both expressions must be assignment-compatible.
- E1011 Symbol '%s' has not been
declared
- The compiler has found a symbol that hasn't been previously declared.
The symbol may be spelled differently than the declaration, or you may
need to #include a header file that contains the
declaration.
- E1012 Expression is not a function
- The compiler has found an expression that looks like a function call,
but it isn't defined as a function.
- E1013 Constant variable cannot be modified
- An expression or statement has been found that modifies a variable that
has been declared with the const keyword.
- E1014 Left operand must be an 'lvalue'
- The operand on the left side of an equal sign (=) must be
a variable or memory location that can have a value assigned to it.
- E1015 '%s' is already defined as a
variable
- You're trying to declare a function with the same name as a previously
declared variable.
- E1016 Expecting identifier
- The token following -> and . operators
must be the name of an identifier that appears in the
struct or union
identified by the operand preceding the -> and
. operators.
- E1017 Label '%s' already defined
- All labels within a function must be unique.
- E1018 Label '%s' not defined in
function
- A goto statement has referenced a label that isn't
defined in the function. Add the necessary label, or check the spelling
of the label(s) in the function.
- E1019 Tag '%s' already defined
- All struct, union and enum
tag names must be unique.
- E1020 Dimension cannot be 0 or negative
- The dimension of an array must be positive and non-zero.
- E1021 Dimensions of multi-dimension array must be
specified
- All dimensions of a multiple dimension array must be specified.
The only exception is the first dimension, which can declared as
[ ].
- E1022 Missing or misspelled data type near
'%s'
- The compiler has found an identifier that isn't a predefined type or
the name of a typedef. Check the identifier for a spelling
mistake.
- E1023 Storage class of parameter must be register or
unspecified
- The only storage class allowed for a parameter declaration is
register.
- E1024 Declared symbol '%s' is not in
parameter list
- Make sure that all the identifiers in the parameter list match those
provided in the declarations between the start of the function and the
opening brace ({).
- E1025 Parameter '%s' already declared
- A declaration for the specified parameter has already been processed.
- E1026 Invalid declarator
- A syntax error has occurred while parsing a declaration.
- E1027 Invalid storage class for function
- If a storage class is given for a function, it must be
static or extern.
- E1028 Variable '%s' cannot be void
- You can't declare a void variable.
- E1029 Expression must be 'pointer to ...'
- An attempt has been made to de-reference (*) a variable or expression
that isn't declared to be a pointer.
- E1030 Cannot take the address of an rvalue
- You can only take the address of a variable or memory location.
- E1031 Name '%s' not found in
struct/union %s
- The specified identifier isn't one of the fields declared in the
struct or union.
Check that the field name is spelled correctly, or that you're pointing
to the correct struct or union.
- E1032 Expression for '.' must be a 'structure' or
'union'
- The compiler has encountered the pattern
expression.field_name, where the
expression isn't a
struct or union type.
- E1033 Expression for '->' must be 'pointer to struct
or union'
- The compiler has encountered the pattern
expression->field_name, where the
expression
isn't a pointer to struct or union type.
- E1034 Symbol '%s' already defined
- The specified symbol has already been defined.
- E1035 static function '%s' has not
been defined
- A prototype has been found for a static function, but a
definition for the static function hasn't been found in the
file.
- E1036 Right operand of '%s' is a pointer
- The right operand of += and -= can't be a
pointer. The right operand of - can't be a pointer, unless
the left operand is also a pointer.
- E1037 Type cast must be a scalar type
- You can't type cast an expression to be a struct,
union, array or function.
- E1038 Expecting label for goto statement
- The goto statement requires the name of a label.
- E1039 Duplicate case value '%s' found
- Every case value in a switch statement must be unique.
- E1040 Field width too large
- The maximum field width allowed is 16 bits.
- E1041 Field width of 0 with symbol not allowed
- A bit field must be at least one bit in size.
- E1042 Field width must be positive
- You can't have a negative field width.
- E1043 Invalid type specified for bit field
- The types allowed for bit fields are signed and
unsigned varieties of char, short
and int.
- E1044 Variable '%s' has incomplete type
- A full definition of a struct or union
hasn't been given.
- E1045 Subscript on non-array
- One of the operands of the subscript operator ([ ])
must be an array.
- E1046 Incomplete comment
- The compiler didn't find */ to mark the end of a comment.
- E1047 Argument for # must be a macro parm
- The argument for the string-conversion operator # must
be a macro parameter.
- E1048 Unknown preprocessing directive
'#%s'
- An unrecognized preprocessing directive has been encountered.
Check the spelling.
- E1049 Invalid #include directive
- A syntax error has been encountered in a #include
directive.
- E1050 Not enough parameters given for macro
'%s'
- You haven't supplied enough parameters to the specified macro.
- E1051 Not expecting a return value for function
'%s'
- The specified function is declared as a void function.
Delete the return statement, or change the type of the
function.
- E1052 Expression has void type
- You tried to use the value of a void expression inside
another expression.
- E1053 Cannot take the address of a bit field
- The smallest addressable unit is a byte.
You can't take the address of a bit field.
- E1054 Expression must be constant
- The compiler expects a constant expression.
This message can occur during static initialization if you're
trying to initialize a non-pointer type with an address expression.
- E1055 Unable to open '%s'
- The file specified in an #include directive couldn't be
located. Make sure that the file name is spelled correctly, or that the
appropriate path for the file is included in the list of paths
specified in the INCLUDE environment variable or the
i= option on the command line.
- E1056 Too many parameters given for macro
'%s'
- You have supplied too many parameters for the specified macro.
- E1057 Modifiers disagree with previous definition of
'%s'
- You have more than one definition or prototype for the variable or
function that have different type modifiers.
- E1058 Cannot use typedef '%s' as a
variable
- The name of a typedef has been found when an operand or
operator is expected. If you're trying to use a type cast, make sure
there are parentheses around the type, otherwise check for a spelling
mistake.
- E1059 Invalid storage class for non-local variable
- A variable with module scope can't be defined with the storage class
of auto or register.
- E1060 Invalid type
- An invalid combination of the following keywords has been specified in
a type declaration:
- const
- volatile
- signed
- unsigned
- char
- int
- short
- long
- float
- double
- E1061 Expecting data or function declaration, but found
'%s'
- The compiler is expecting the start of a data or function declaration.
If you're only part way through a function, then you have too many
closing braces (}).
- E1062 Inconsistent return type for function
'%s'
- Two prototypes for the same function disagree.
- E1063 Missing operand
- An operand is required in the expression being parsed.
- E1064 Out of memory
- The compiler has run out of memory to store information about the file
being compiled. Try reducing the number of data declarations and/or the
size of the file being compiled.
Don't #include header files that aren't required.
For the 16-bit WATCOM C compiler,
the -d2 option causes the compiler to use more memory.
Try compiling with the d1 option instead.
- E1065 Invalid character constant
- This message is issued for an improperly formed character constant.
- E1066 Cannot perform operation with pointer to void
- You can't use a ``pointer to void'' with the operators
+, -, ++, --,
+= and -=.
- E1067 Cannot take address of variable with storage class
'register'
- If you want to take the address of a local variable, change the storage
class from register to auto.
- E1068 Variable '%s' already initialized
- The specified variable has already been statically initialized.
- E1069 Ending " missing for string literal
- The compiler didn't find a second double quote to end the string
literal.
- E1070 Data for aggregate type must be enclosed in curly
braces
- When an array, struct or union is statically initialized, the data
must be enclosed in curly braces ({}).
- E1071 Type of parameter %d does not
agree with previous definition
- The type of the specified parameter is incompatible with the prototype
for that function.
The following example illustrates a problem that can arise when the
sequence of declarations is in the wrong order:
/* Uncommenting the following line will
eliminate the error */
/* struct foo; */
void fn1( struct foo * );
struct foo {
int a,b;
};
void fn1( struct foo *bar )
{
fn2( bar );
}
The problem can be corrected by reordering the sequence in which items
are declared (by moving the description of the structure foo
ahead of its first reference, or by adding the indicated statement).
This will assure that the first instance of structure foo
is defined at the proper outer scope.
- E1072 Storage class disagrees with previous definition
of '%s'
- The previous definition of the specified variable has a storage class
of static. The current definition must have a storage class
of static or extern.
- E1073 Invalid option '%s'
- The specified option isn't recognized by the compiler.
- E1074 Invalid optimization option
'%s'
- The specified option is an unrecognized optimization option.
- E1075 Invalid memory model '%s'
- The memory model option must be one of the following:
- ms
- Small memory model
- mm
- Medium memory model
- mc
- Compact memory model
- ml
- Large memory model
- mh
- Huge memory model
- mf
- Flat memory model
- E1076 Missing semicolon at end of declaration
- You're missing a semicolon (;) on the declaration just
before the left curly brace ({).
- E1077 Missing '}'
- The compiler detected the end of the file before finding a right curly
brace (}) to end the current function.
- E1078 Invalid type for switch expression
- The type of a switch expression must be integral.
- E1079 Expression must be integral
- An integral expression is required.
- E1080 Expression must be arithmetic
- Both operands of the *, / and %
operators must be
arithmetic. The operand of the unary minus must also be arithmetic.
- E1081 Expression must be scalar type
- A scalar expression is required.
- E1082 Statement required after label
- The C language definition requires a statement following a label.
You can use a null statement that consists of just a semicolon
(;).
- E1083 Statement required after 'do'
- A statement is required between the do and
while keywords.
- E1084 Statement required after 'case'
- The C language definition requires a statement following a
case label. You can use a null statement that consists of
just a semicolon (;).
- E1085 Statement required after 'default'
- The C language definition requires a statement following a
default label. You can use a null statement that consists
of just a semicolon (;).
- E1086 Expression too complicated, split it up and try
again
- The expression contains too many levels of nested parentheses.
Divide the expression up into two or more sub-expressions.
- E1087 Missing matching #endif directive
- You're missing a #endif to terminate a #if,
#ifdef or #ifndef preprocessing directive.
- E1088 Invalid macro definition, missing )
- The right parenthesis ()) is required for a function-like
macro definition.
- E1089 Missing ) for expansion of '%s'
macro
- The compiler encountered end-of-file while collecting up the argument
for a function-like macro. A right parenthesis ()) is
required to mark the end of the argument(s) for a function-like macro.
- E1090 Invalid conversion
- A struct or union can't be converted to
anything. A float or double can't be
converted to a pointer, and a pointer can't be converted to a
float or double.
- E1091 %s
- This is a user message generated with the #error
preprocessing directive.
- E1092 Cannot define an array of functions
- You can have an array of pointers to functions, but not an array
of functions.
- E1093 Function cannot return an array
- A function can't return an array. You can return a pointer to an
array.
- E1094 Function cannot return a function
- You can't return a function. You can return a pointer to a function.
- E1095 Cannot take address of local variable in static
initialization
- You can't take the address of an auto variable at
compile time.
- E1096 Inconsistent use of return statements
- The compiler has found
- a return statement that returns a value
- a return statement that doesn't return a value
both in the same function. The return statement that
doesn't return a value needs to have a value specified to be consistent
with the other return statement in the function.
- E1097 Missing ? or misplaced :
- The compiler has detected a syntax error related to the conditional
operators (? and :). You may need parentheses
around the expressions involved so that the entire expression can be
parsed correctly.
- E1098 Maximum struct or union size is 64K
- The size of a struct or union is limited to
64K, so that the compiler can represent the offset of a member in a
16-bit register.
- E1099 Statement must be inside function. Probable cause:
missing {
- The compiler has detected a statement, such as for,
while and switch that must be inside a
function. You either have too many closing braces (}), or
you're missing an opening brace ({) earlier in the function.
- E1100 Definition of macro '%s' not
identical to previous definition
- If a macro is defined more than once, the definitions must be
identical. If you want to redefine a macro to have a different
definition, you must #undef it before you can define it
with a new definition.
- E1101 Cannot #undef __LINE__, __FILE__, __DATE__,
__TIME__, __STDC__ or 'defined'
- The special macros
- __LINE__
- __FILE__
- __DATE__
- __TIME__
- __STDC__
and the identifier defined can't be deleted by the
#undef directive.
- E1102 Cannot #define the name 'defined'
- You can't define a macro called defined.
- E1103 ## must not be at start or end of replacement
tokens
- There must be a token on each side of the token-pasting operator
(##).
- E1104 Type cast not allowed in #if or #elif
expression
- A type cast isn't allowed in a preprocessor expression.
- E1105 'sizeof' not allowed in #if or #elif
expression
- The sizeof operator isn't allowed in a preprocessor
expression.
- E1106 Cannot compare a struct or union
- A struct or union can't be compared with
== or !=. You must compare each member of a
struct or union to determine equality or
inequality. If the struct or union is packed
(that is, it has no holes in it for alignment purposes) then you can
compare two structs using the memcmp() function.
- E1107 Enumerator list cannot be empty
- You must have at least one identifier in an enum list.
- E1108 Invalid floating-point constant
- The exponent part of the floating-point constant isn't formed
correctly.
- E1109 Cannot take sizeof a bit field
- The smallest object that you can ask for the size of is a
char.
- E1110 Cannot initialize variable with storage class of
extern
- A storage class of extern is used to associate the
variable with its actual definition somewhere else in the program.
- E1111 Invalid storage class for parameter
- The only storage class allowed for a parameter is
register.
- E1112 Initializer list cannot be empty
- An initializer list must have at least one item specified.
- E1113 Expression has incomplete type
- An attempt has been made to access a struct or
union whose definition isn't known, or an array whose
dimensions aren't known.
- E1114 Struct or union cannot contain itself
- You can't have a struct or union
contain itself. You can have a pointer in the struct
that points to an instance of itself. Check for a missing asterisk
(*) in the declaration.
- E1115 Incomplete enum declaration
- The enumeration tag hasn't been previously defined.
- E1116 An id list not allowed except for function
definition
- A function prototype must contain type information.
- E1117 Must use 'va_start' macro inside function with
variable parameters
- The va_start() macro is used to set up access to the
parameters in a function that takes a variable number of parameters.
A function is defined with a variable number of parameters by declaring
the last parameter in the function as ``...''.
- E1118 ***FATAL*** %s
- A fatal error has been detected during code generation time.
The type of error is displayed in the message.
- E1119 Internal compiler error %d
- A bug has been encountered in the WATCOM C compiler. Please report the
specified internal compiler error number and any other helpful details
about the program being compiled to QNX Software Systems Ltd., so that
we can fix the problem.
- E1120 Parameter number %d - invalid
register in #pragma
- The designated registers can't hold the value for the parameter.
- E1121 Procedure '%s' has invalid
return register in #pragma
- The size of the return register doesn't match the size of the result
returned by the function.
- E1122 Illegal register modified by '%s'
#pragma
- For the 16-bit WATCOM C compiler:
- the BP, CS, DS, and
SS registers can't be modified in small data
models
- the BP, CS, and SS registers
can't be modified in large data models
For the 32-bit WATCOM C compiler:
- the EBP, CS, DS,
ES, and SS registers can't be modified in
flat
memory models
- the EBP, CS, DS, and
SS registers can't be modified in small data
models
- the EBP, CS, and SS
registers can't be modified in large data
models
- E1123 File must contain at least one external
definition
- Every file must contain at least one global object (either a data
variable or a function). This message is only issued in strict ANSI mode
(-za).
- E1124 Out of macro space
- The compiler ran out of memory for storing macro definitions.
- E1125 Keyboard interrupt detected
- The compile has been aborted with
Ctrl-C or
Ctrl-Break.
- E1126 Array, struct or union cannot be placed in a
register
- Only scalar objects can be specified with the register
class.
- E1127 Type required in parameter list
- If the first parameter in a function definition or prototype is defined
with a type, then all of the parameters must have a type specified.
- E1128 Enum constant too large
- All of the constants must fit in either an int or
unsigned.
- E1129 Type doesn't agree with previous definition of
'%s'
- You have more than one definition of a variable or function, and they
don't agree.
- E1130 Duplicate name '%s' not allowed
in struct or union
- All the field names in a struct or union
must be unique.
- E1131 Duplicate macro parameter
'%s'
- The parameters specified in a macro definition must be unique.
- E1132 Unable to open work file: error code =
%d
- The compiler tries to open a new work file by the name
__wrkN__.tmp, where
N is a digit in the range 0 through 9.
This message is issued if all of those files already exist.
- E1133 Write error on work file: error code =
%d
- An error was encountered trying to write information to the work file.
The disk could be full.
- E1134 Read error on work file: error code =
%d
- An error was encountered trying to read information from the work file.
- E1135 Seek error on work file: error code =
%d
- An error was encountered trying to seek to a position in the work file.
- E1136 Token too long - truncated
- The token must be less than 510 bytes in length.
- E1137 Out of enum space
- The compiler has run out of space allocated to store information on all
of the enum constants defined in your program.
- E1138 Filename required on command line
- The name of a file to be compiled must be specified on the command
line.
- E1139 Command line contains more than one file to
compile
- You have more than one file name specified on the command line to be
compiled. The compiler can only compile one file at a time.
You can use the cc utility to compile multiple files with a
single command.
- E1140 _leave must appear in a _try statement
- The _leave keyword must be inside a _try
statement. The _leave keyword causes the program to jump to
the start of the _finally block.
- E1141 Expecting end of line but found
'%s'
- A syntax error has been detected.
The token displayed in the message should help you determine the problem.
- E1142 Too many bytes specified in #pragma
- There's an internal limit on the number of bytes for in-line code
that can be specified with a pragma.
Try splitting the function into two or more smaller functions.
- E1143 Cannot resolve linkage conventions for routine
'%s' #pragma
- The compiler can't generate correct code for the specified routine
because of register conflicts.
Change the registers used by the parameters of the pragma.
- E1144 Symbol '%s' in pragma must be
global
- The in-line code for a pragma can only reference a global variable or
function. You can only reference a parameter or local variable by
passing it as a parameter to the in-line code pragma.
- E1145 Internal compiler limit exceeded, break module into
smaller pieces
- The compiler can handle 65535 quadruples, 65535 leaves, and 65535
symbol table entries and literal strings. If you exceed one of these
limits, you must break the program into smaller pieces so the
compiler can process it.
- E1146 Invalid initializer for integer data type
- Integer data types (int and long) can be
initialized with numeric expressions or address expressions that are the
same size as the integer data type being initialized.
- E1147 Too many errors: compilation aborted
- The compiler stops compiling when the number of errors generated
exceeds the error limit. The error limit can be set with the
e option. The default error limit is 20.
- E1148 Expecting identifier but found '%s'
- A syntax error has been detected.
The token displayed in the message should help you determine the problem.
- E1149 Expecting constant but found
'%s'
- The #line directive must be followed by a constant
indicating the desired line number.
- E1150 Expecting "filename" but found
'%s'
- The second argument of the #line directive must be a
filename, enclosed in quotes.
- E1151 Parameter count does not agree with previous
definition
- You have either not enough parameters or too many parameters in a call
to a function. If the function is supposed to have a variable number of
parameters, then you're missing the , ... in the function
prototype.
- E1152 Segment name required
- A segment name must be supplied in the form of a literal string
to the __segname() directive.
- E1153 Invalid __based declaration
- The compiler couldn't recognize one of the allowable forms of
__based declarations. See the WATCOM C Language
Reference for description of all the allowable forms of
__based declarations.
- E1154 Variable for __based declaration must be of type
__segment
- A based pointer declaration must be based on a simple variable of type
__segment.
- E1155 Duplicate external symbol %s
- Duplicate external symbols exist when the specified symbol name is
truncated to 8 characters.
- E1156 Assembler error: '%s'
- An error has been detected by the in-line assembler.
The message indicates the error detected.
- E1157 Variable must be 'huge'
- A variable or an array that requires more than 64K of storage in the
16-bit compiler must be declared as huge.
- E1158 Too many parm sets
- Too many parameter register sets have been specified in the pragma.
- E1159 I/O error reading '%s':
%s
- An I/O error has been detected by the compiler while reading the
source file. The system-dependent reason is also displayed in the
message.
- E1160 Attempt to access far memory with all segment
registers disabled in '%s'
- The compiler doesn't have any segment registers available to access the
desired far memory location.
- E1161 No identifier provided for /D option
- The command-line option d must be followed by the name of
the macro to be defined.
- E1162 Invalid register pegged to a segment in
'%s'
- The register specified in a #pragma data_seg, or a
__segname expression must be a valid segment register.
- E1163 Invalid octal constant
- An octal constant can't contain the digits 8 or 9.
- E1164 Invalid hexadecimal constant
- The token sequence 0x must be followed by a hexadecimal
character (0-9, a-f, or A-F).
- E1165 Unexpected ')'. Probable cause: missing '('
- A closing parenthesis was found in an expression without a
corresponding opening parenthesis.
- E1166 Symbol '%s' is unreachable from
#pragma
- The in-line assembler found a jump instruction to a label
that's too far away.
- E1167 Division or remainder by zero in a constant
expression
- The compiler found a constant expression containing a division or
remainder by zero.
- E1168 Cannot end string literal with backslash
- The argument to a macro that uses the string-conversion operator
# on that argument must not end in a backslash character.
For example,
#define str(x) #x
str(@#\)
- E1169 Invalid __declspec declaration
- The only valid __declspec declarations are:
- __declspec(dllexport)
- __declspec(dllimport)
- E1170 Too many storage class specifiers
- You can only specify one storage class specifier in a declaration.
- E1171 Expecting '%s' but found end of
file
- A syntax error has been detected. The compiler was still expecting
more input when it reached the end of the source program.
- E1172 Expecting struct/union tag but found
'%s'
- The compiler expected to find an identifier following the
struct or union keyword.
- E1173 Operand of __builtin_isfloat() must be a type
- The __builtin_isfloat() function is used by the
va_arg() macro to determine if a type is a floating-point
type.
- I2000 Not enough memory to fully optimize procedure
'%s'
- The compiler didn't have enough memory to fully optimize the specified
procedure. The code generated will still be correct and execute properly.
This message is purely informational.
- I2001 Not enough memory to maintain full peephole
- This message is similar to message I2000.
Certain optimizations benefit from being able to store the entire module
in memory during optimization.
All functions are individually optimized but the optimizer isn't
able to share code between functions if this message appears.
The code generated is still correct and will execute properly.
This message is purely informational.
It's only printed if the warning level is greater than or equal to 4.
|
The main reason for this message is for those people who are concerned
about reproducing the exact same object code when the same source file
is compiled on a different machine.
You may not be able to reproduce the exact same object code from one
compile to the next unless the available memory is exactly the same.
|