CONTENTS | INDEX | PREV | NEXT
C1:001,C1:002,C1:003,C1:004,C1:006
__autoinit, __autoexit, __geta4, __chip, floating point
-------------------------------------------------------
These error messages should only occur if you are using the freeware
release, and attempt to use features not supported in that limited
version.
C1:009
Unexpected EOF
--------------
The source or header file ended abruptly, for example ending in the
middle of a quoted string or macro.
C1:010
Char Const Too Large!
---------------------
Only 4 characters are allowed within a character constant, more than
four, such as 'abcde' will generate this error.
C1:011
NewLine in string constant
--------------------------
A newline occurs within a string constant, such as the next two
lines:
"abcd
efgh"
This is not legal under ANSI C. Instead, you can create a single
large string using "string1" "string2" ... two sets of quoted strings
with no delimiter, putting them side by side or on separate lines as
you like.
C1:012
Illegal character '%c' $%02x
----------------------------
Certain characters are illegal. One example is '#', when not part of
a preprocessor directive: int x= 43#.
C1:013
Unexpected Token '%s' expected '%s'
-----------------------------------
The expected token wasn't the one we got! The error message tells you
what the character was and what was expected. This is normally
indicative of mismatched parenthesis or a semi-colon inside a
subroutine call that expected commas or a close parenthesis. Most
full featured prograzmmer's editors can match braces (ie. find a
matching } for every {) to help track these errors down.
C1:014
__geta4 keyword does NOT work with residentable executables!
------------------------------------------------------------
__geta4 requires the base of the data to be at a known absolute
relocatable location. You cannot use __geta4 in conjunction with -r
because residentable code allocates its data segment at run time.
Keep in mind that in the most common situation where you might get
such an error -- writing shared libraries and devices, making the
program resident would not buy you anything anyway. The other common
situation where you would need to use __geta4 -- Amiga shared library
callbacks, currently requires you to not make such executables
residentable.
C1:015
More than 32K of auto variables!
--------------------------------
DICE accesses all stack variables using word-register-relative, thus
no more than 32KBytes worth of stack variables may be declared.
C1:016
Unsupported return type
-----------------------
You attempted to return a type that is currently unsupported. Since
all return types including structural returns are now supported, you
should not get this error message. Getting this error message would
most likely be due to a bug in DICE.
C1:017
constant does not fit storage: %d
---------------------------------
DICE will, in some cases, catch the use of constants that are out of
range in a particular situation. For example, specifying the constant
'128' in relation to a signed character (-128 to 127).
DICE checks constant-fit only in hazzardous situations such as in a
switch().
C1:018
size mismatch: %d, %d
---------------------
This is a code generation error which can occur when you compare or
run operations on incompatible types. This error occurs when high
level routines in the compiler fail to detect a problem with your
source.
C1:019
repeated case: %d (0x%08lx)
---------------------------
The specified case, given in both decimal and hex, occurs more than
once within a switch statement.
C1:020,C1:021
block operation error in source, block operation error in dest
--------------------------------------------------------------
Generally means that either the source or the destination of a
block-op, such as a structure assignment, are incompatible. For
example:
foo = bar;
where foo has a different structure type than bar. Generally this
error is preceeded by an "illegal assignment" error.
C1:022
dest not lvalue
---------------
Generally occurs if the object of an assignment is not assignable
("lvalue means modifiable value). However, note that DICE is notably
weak in this area. It will cheerfully allow you to do things like (a
+ b) = c + d;, obviously illegal.
C1:023
syntax error in expression
--------------------------
A General syntax error in an expression occured. Usually occurs due
to an illegally constructed expression, such as:
a ] b;
can also occur due to too few parenthesis.
C1:024
expected expression
-------------------
An expression was expected when, instead, either nothing or a
statement was found. This can also occur due to a syntax error in the
expression.
C1:025
expected '}'
------------
A close brace was expected, for example, a global declaration such
as:
int a[] = { 1, 2, 3;
C1:026
expected %d close parens
------------------------
Expected one or more close parenthesis in an expression.
C1:027
expected close bracket
----------------------
Expected a close bracket ']', generally caused by an incomplete array
index such as a[i = 4;
C1:028
expected identifer after . or ->
--------------------------------
A structure indirection via '.' or '->' requires a structure member
to be specified. i.e. a field MAJOR HEADING.
C1:029
expected ',' or ')' in function call
------------------------------------
Expected a delimiter in a function call. Either comma if another
argument is to be given, or a close parenthesis to end the function
call.
C1:030
undefined symbol: %s
--------------------
The given symbol is not defined. For example, referencing a variable
that was not defined or extern'd.
C1:031
expected integer constant
-------------------------
An integer constant was expected, generally occurs when you declare
an array. For example, the following is illegal: int i[j];
C1:032
not an lvalue
-------------
Occurs when an lvalue was expected, usually in an assignment. An
lvalue is an expression which exists in real storage, for example:
*ptr = 4;
the expression '*ptr' points to real storage where as the expression
(a + b) in;
(a + b) = 4;
does NOT. Note that DICE is not very good at catching lvalues errors
yet.
C1:033
goto label not found: %.*s
--------------------------
The label that was given as a target for a goto statement was not
found anywhere in the procedure.
C1:034
constant div/mod by 0
---------------------
You attempted to use the '/' or '%' operator with the constant value
0 on the right hand side. Division/Modulus by 0 is illegal.
C1:035
ptr-ptr mismatch: type %s
-------------------------
Generally occurs in a pointer comparison or assignment. The two
pointers do not point to the same type. Example,
char *a; long *b; if (a < b);
The error message indicates the type of the pointer that you are
attempting to use. This is typically followed by an error C1:115
which contains the type that was expected.
C1:036
unexpected void type
--------------------
Occurs due to an illegally constructed expression where the result
storage is void.
C1:037
result not used
---------------
This warning occurs in some cases where an expression has been
calculated but the result ends up not being used. For example:
a <= 4;
C1:039
& of bitfield illegal
---------------------
It is not legal to take the address of a bitfield element in a
structure since no pointer representation is possible.
C1:040
indirection through non-ptr
---------------------------
Example: int a; *a = 4; ... i.e. where 'a' wasn't a pointer. Will
also occur if you attempt to index a variable which is not an array
or pointer, i.e. a[4] = 4; where 'a' is an integer instead of an
array/pointer.
C1:041
must #include <alloca.h> for alloca
-----------------------------------
DICE requires a special alloca. To obtain it any modules that use
alloca() must #include <alloca.h> which redefines it properly.
C1:042
left hand side of assignment is not a procedure
-----------------------------------------------
You attempted to make a procedure call, such as foo(23); where foo is
not a procedure. Example:
int foo;
...
foo(23);
This can occur if you accidently declare a variable whos MAJOR
HEADING is the same as a procedure you attempt to call.
C1:043
unprototyped call
-----------------
When the -proto option to DCC is used, any procedure call which is
not prototyped will generate this error.
C1:044, C1:045
too few parameters in call, too many parameters in call
-------------------------------------------------------
For prototyped procedures, the number of arguments is generally
known. DICE will print these warnings if you make a procedure call
with too few or too many arguments.
C1:046
not structure or union type
---------------------------
An attempt was made to indirect through a structure or union where
the left hand side was not a structure or union type.
C1:047
maximum auto storage for temporaries exceeded
---------------------------------------------
DICE tracks stack temporaries, mainly for floating point. If DICE's
maximum number of temporaries is exceeded due to an overly complex
expression, this error will be given. You should try breaking up the
code into smaller chunks.
C1:048
register not allocated: %d
--------------------------
This is generally an indication of a software error within DC1 if not
preceeded by other error messages.
C1:049
expected integer type
---------------------
An integer type was expected but instead a non-integer type was
found. For example, trying to use a float to index an array.
C1:050
illegal ptr arithmatic
----------------------
This error generally occurs when you do something illegal with a
pointer. For example, while 'ptr - i' is valid, 'i - ptr' is not.
While you can subtract two pointers 'p1 - p2', you cannot add two
pointers 'p1 + p2'.
C1:051,C1:052
illegal ptr conversion, illegal structure conversion
----------------------------------------------------
These errors generally occurs when you attempt to cast a structure to
a pointer or vise versa.
C1:053
illegal cast
------------
A catch all for casts that DICE does not understand, such as
converting integers into arrays.
C1:054
ptr-int conversion
------------------
Generally occurs when DICE is forced to convert a pointer to an
integer, for example when making a procedure call and passing a
pointer when the procedure expected an integer.
C1:055
illegal int conversion
----------------------
It is illegal to convert an integer to a structure or vice-versa,
generally the error occurs through an explicit cast.
C1:056
int-ptr conversion
------------------
Generally occurs when DICE is forced to convert an integer to a
pointer, for example when making a procedure call and passing an
integer when the procedure expected a pointer. The most common
problem related to this is not having #include'd the appropriate
prototypes for various Amiga library calls or for your own routines.
C1:057
int/ptr mismatch
----------------
Generally occurs when you compare two unlike types (an integer and a
pointer).
C1:058
illegal or incompatible structure operation
-------------------------------------------
When you assign structures to each other they must be of the same
type and size. May also occur if you accidently assign a structure to
a non-structure or vice-versa.
C1:059
illegal assignment
------------------
The assignment is illegal. Usually occurs if you attempt to assign a
field in a structure in the structure definition, like:
struct foo {
int x = 4; /* huh ?? */
};
C1:060
illegal ptr-int or int-ptr conversion, int-size != ptr-size
-----------------------------------------------------------
This is catch-all for programs that convert between pointers and
integers and vice-versa. You can only convert an int or long to a
pointer and back in DICE. Converting to or from a short is illegal.
C1:061
illegal bit-field operation
---------------------------
The bitfield operation is not legal. Generally occurs when you
attempt to declare a bitfield not part of a structure or union.
C1:062
illegal compare
---------------
Generally occurs when you attempt to compare two structures. You can
only use == and != when comparing structures.
C1:063
undefined structure tag: %s
---------------------------
Generally occurs when you attempt to reference a field in a structure
which has yet to be defined. Note that it is perfectly legal to
declare pointers to undefined structures as long as you do not
attempt to reference a field in the structure.
The error message indicates the structure tag that was not found.
C1:064
undefined struct/union field: %s
--------------------------------
The specified field does not exist in the structure definition.
C1:065
ran out of memory
-----------------
DICE ran out of memory. The README file outlines possible steps to
take ranging from making fewer things resident to specifying a
temporary directory on your HD instead of in T: (usually assigned to
RAM:). The best work around is to split up large source files into
smaller ones.
C1:066
fp constant string too long!
----------------------------
A floating point constant is too long (> 128 digits). DICE can only
handle so much.
C1:067
fp constant too large to convert to int
---------------------------------------
The fp constant is less than -0x80000000 or larger than 0x7FFFFFFF
and thus cannot be converted to an integer.
C1:068
expected semicolon
------------------
A semicolon was expected. For example:
int a<--- oops
int b;
Generally occurs when something unexpected happens, a semicolon is
not always the correct solution. For example, can occur if you have
too many close braces.
C1:069
illegal type/storage qualifier for variable
-------------------------------------------
The type or storage qualifier is illegal for this variable
declaration.
C1:070
illegal typedef
---------------
The typedef is illegal.
C1:071
multiply defined procedure
--------------------------
You have defined a procedure (definition means procedure declaration
with { ... code ... }) more than once in the same source file.
C1:072
type too complex
----------------
Occurs if a type is too complex for DICE to handle. For example, DICE
cannot deal with an array with 32 dimensions.
C1:073
syntax error in declaration
---------------------------
This is a very general error that indicates that DICE no longer
understood what you were trying to compile. If there are any other
previous errors, they could have cascaded to the point of confusion.
Otherwise, the problem should be at the error position or immediately
before it. Note that sometimes an error in a #include file sometimes
does not show up until immediately after the end of the file.
C1:074
enum identifier overides variable/type
--------------------------------------
Occurs if you create an enum identifier that overides an existing
typedef or variable. While enum's are supposed to be in a separate
domain, this is one of the areas in which DICE is not totally ANSI.
C1:075
id missing in procedure declaration
-----------------------------------
You have made a procedure definition, probably using the ANSI
procedure definition style, but forgotten to specify an identifier
for one of the arguments. Only procedure REFERENCES may leave off
the identifier.
void fubar(int) {...} /* not ok in definition */
void fubar(int); /* ok in prototype */
C1:076
procedure id decl not in id list
--------------------------------
This occurs if you declare a procedure with arguments old style and
mistakenly declare a variable that wasn't specified in the identifier
list.
int fubar(a,b,c)
int a, b, c, d;
{
}
Note that the variable 'd' did not exist in the id list.
C1:077
statement's condition must be an expression
-------------------------------------------
RETURN, IF, DO and WHILE require an expression or nothing. The middle
argument for FOR() requires an expression. Whatever you gave the
compiler, it wasn't an expression.
C1:078
duplicate default: in switch
----------------------------
You have more than one default: statement in a switch.
C1:080
expected '{' or '}' for procedure def
-------------------------------------
Just a more specific error message to the general syntax error. There
is something wrong with your procedure definition, DICE expected an
open brace and then the procedure but didn't see an open brace.
C1:081
case/default outside switch
---------------------------
with DICE, the case and default statements must be on the same
semantic level as the switch() { ... } even though ANSI says they can
be in lower levels. At least for now. The other common cause is if
you really do have a case or default statement outside of the switch
statement.
C1:082
else without if
---------------
You have an ELSE statement not associated with any IF statement. The
most common mistake is when you accidently put two statements in
between an IF and an ELSE without using braces, like this:
if (i == 0)
i = 1; j = 2; /* wrong, need braces if */
/* more than one stmt */
else
i = 3;
Which more commonly occurs if you use #define macros heavily.
C1:083
too many initializers
---------------------
This error will occur if you specify more initializers in a structure
assignment then the structure has fields. For example:
struct { int a, b; } Fu = { 1, 2, 3 };
/* where's the 3 go? */
C1:084
array cannot hold string
------------------------
This error will occur if you declare an array and initialize it to a
string that is larger then the array. Note that the special case
where the string's nil terminator is just outside the array is
allowed (the nil terminator is ignored).
char Fu[3] = { "abcd" };
C1:085
illegal register specification
------------------------------
This error occurs if you specify more then one register for a
procedure argument. E.G. void fubar(__D0 __D1 int a) { ... }
C1:086
Variable not used: %*.*s
------------------------
This warning informs you of variables which you have declared but not
referenced.
C1:087
Illegal return type
-------------------
This error indicates that you have attempted to return a type which
is incompatible with the return type of the procedure. For example,
returning an integer from a procedure which is supposed to return
void.
C1:088
Warning, SAS/C __qualifier placement
------------------------------------
DICE attempts to be somewhat SAS/C compatible in terms of type
qualifier placement but, frankly, SAS/C is too wierd in some
respects. With DICE, extensions normally occur BEFORE the type MAJOR
HEADING while in SAS/C they normally occur AFTER the type MAJOR
HEADING. DICE will accept SAS/C qualifier placement and issue this
warning, but note that in this particular case multiple declarators
separated by commas will not work using SAS/C qualifier placement:
int __chip a, b; /*DOESN'T WORK, ONLY A in CHIP*/
__chip int a, b; /*OK, BOTH A & B ARE IN CHIP */
You should also note that DICE accepts __asm, simply ignoring it, and
also ignores the register qualifier with explicit register
specifications. That is:
long fubar(__D0 int a) ... /* DICE METHOD */
long fubar(a) /* DICE METHOD */ __D0 int a;
{
...
long __asm fubar(register __d0 int a)
... /* SAS/C */
DICE will accept the SAS/C registered args procedure format in the
MAJOR HEADING of portability but it's unreadable.
C1:089
BREAK outside of loop/switch
----------------------------
The BREAK statement normally breaks out of the nearest switch, do,
for, or while statement. If you are not within any of those
constructs there is nowhere to BREAK to and this error message will
occur.
C1:090
CONTINUE outside of loop
------------------------
The CONTINUE statement normally continue's to the nearest do, for, or
while statement (note that switch() statements are skipped). If you
are not within a loop statement then CONTINUE has nowhere to go and
this error message occurs.
C1:091
Cannot take the address of a constant
-------------------------------------
You cannot take the address of a constant. E.G. int *a = &4; ...
what is that supposed to mean? If you code structures to constant
addresses remember to cast the constant addresses as pointers.
C1:092
Cannot passed unaligned structs by value
----------------------------------------
The __unaligned storage qualifier is meant for certain very rare
situations where you do not want structures to be word aligned.
Unfortunately, DICE is not able to perform all possible operations on
such structures and passing them by value is one of those operations.
You can pass a pointer to the structure just fine, just not by value.
C1:093
Prototype required for inline call
----------------------------------
Inline library calls are generally implemented by #include'ing the
appropriate prototype file. The DICE method is to #include the
appropriate file in clib/, e.g. <clib/exec_protos.h>. DICE will find
"dinclude:clib/exec_protos.h" first which then declares the #pragma's
and finally includes the commodore protos,
"dinclude:amiga20/clib/exec_protos.h". This error occurs if a
#pragma has been found for a routine but no ANSI prototype. DICE
requires an ANSI prototype as well as a #pragma to be able to make an
inline library call.
C1:094
Input must be a seekable file
-----------------------------
DICE must be able to seek around the input file. This error occurs
if, for example, you specify a pipe as the input file instead of a
disk file.
C1:095
Can't open %s
-------------
DICE is unable to open the specified file
C1:096
Read failed
-----------
DICE is able to open the file but Read() failed unexpectedly.
C1:097
Can't open output %s
--------------------
DICE is unable to create either a temporary output file or your
specified output file, depending on what it is doing. For example,
if you compile a source file into an object DICE can give this error
while attempting to create the temporary assembly (.a) file before
assembling it into your object.
C1:098
Incorrect type for indirection
------------------------------
You can only indirect (the unary '*' operator) through a pointer.
C1:099
Base variable (%.*s) for pragma is undefined
--------------------------------------------
DICE has found a subroutine call for which a #pragma statement is
present, but the library base for the #pragma statement is missing.
Typically this will occur when you #include the pragma file directly
without including the prototypes or library definition as in:
#include <pragmas/exec_pragmas.h>
...
Disable();
To solve the problem, you should #include the corresponding clib file
like:
#include <clib/exec_protos.h>
C1:100
sizeof(type) is 0
-----------------
The size of the type passed to sizeof is zero bytes long. Typically
this occurs when you take the size of an undefined structure tag or
the sizeof a void.
C1:101
Duplicate variable/symbol in same {} block: %.*s
------------------------------------------------
This occurs when you have two variables in the same block which have
the exact same MAJOR HEADING (usually as the result of a cut/paste
operation). Simply reMAJOR HEADING one of the variables (or delete
the duplicated line).
C1:102
Variable declared but not used: %.*s
------------------------------------
This warning identifies a variable which is not referenced within the
scope of a subroutine. Often this is the result of code that has
been #ifdefed out. DICE will continue to compile the code.
C1:103
Variable overides procedure argument: %.*s
------------------------------------------
You have declared a local variable which is the same MAJOR HEADING as
one of the parameters to the current procedure as in:
void foo(int i)
{
int i;
...
Since there would be no way to access the parameter, DICE issues the
error. You need to reMAJOR HEADING either the parameter or the local
variable. This is often the result of a cut/paste operation within
the editor.
C1:104
Pragma argument count conflict with prototype: %.*s
---------------------------------------------------
This error indicates that there is a difference of opinion as to the
number of parameters that an inline function takes. The #pragma
statement for the function codes the number of parameters while the
prototype explicitely lists them. If you encounter this error, you
will have to examine the two in order to determine which is right.
C1:105
Only D0 supported as a return register for pragmas: %.*s
--------------------------------------------------------
The #pragma statement had a value other than 0 in the next to the
last character of the register specification. Since all Amiga
functions return the result in D0, you need to correct the prototype.
C1:106
Attempt to indirect through void pointer
----------------------------------------
DICE detected an attempt to use a void pointer to reference memory.
Since a void pointer can not point to anything real, you must cast
the pointer to the correct type before using it.
void *vp;
char c;
...
c = *vp; /* Not allowed */
c = *(char *)vp; /* This eliminates the error */
C1:107
Structure/Union %s has no members
---------------------------------
After parsing the structure, there turned out to be no members in it.
You need to correct the declaration of the structure. Often this is
the result of a macro expansion.
C1:108
Missing comma in initialization expression
------------------------------------------
When initializing an array, DICE did not find a comma between two
elements in the array. Often DICE is correct about assuming you
needed the comma, but you should check it to be certain.
char foo[10] = { 1, 2, 3 /* oops */ 4, 5 };
C1:109
Return type for procedures do not match from: %s
------------------------------------------------
The procedure that you are declaring OR assigning (in the case of a
function pointer) returns a different type than what it is being
matched to. This will be followed by an C1:115 error message which
indicates the type that was expected. To correct this, you will need
to either insert a cast (only as a last resort) or correct the
declarations.
C1:110
Number of args mismatch with prototype
--------------------------------------
The procedure being declared does not have the same number of
arguments as a prototype previously encountered for this procedure.
You will need to correct one or the other.
C1:111
Prototype into Non-Prototype
----------------------------
A function that was previously declared as a prototype style function
is now being redeclared as a non-prototype style function in a manner
which causes the types to be incompatible. You need to correct one
or the other.
C1:112
Incompatible procedure Argument #%d type: %s
--------------------------------------------
This can occur in one of two places: During the declaration of a
function or during the assignment of a function pointer. In both
cases, one of the parameters of the two types (the original prototype
or the left hand side of the assignment) doesn't match. This will be
followed by a C1:115 error message which indicates the type that was
expected. To correct this, you will need to fix the declarations.
C1:113
Argument #%d is in a different register
---------------------------------------
This is usually the result of matching __STKARGS function with a
__REGARGS function. In rare cases it can be seen when you actually
declare the parameters to be in specific registers. You will need to
correct the declarations to make them match.
C1:114
Structure Types do not match: %s
--------------------------------
Two Structure/Union/Bitfield types are not equivalent. You will need
to either insert a cast or correct the declarations. This will be
followed by a C1:115 error message to indicate the type that was
expected.
C1:115
Does not match original declaration type: %s
--------------------------------------------
This is always paired up with another error message (C1:035, C1:109,
C1:112, or C1:114) to provide more information about a type that was
mismatched. This message simply tells you what was expected. You
will never see this message by itself and any corrective action will
be based on the immediately previous error message.
C1:116
Subroutine too complex to generate code for
-------------------------------------------
In rare cases, DICE will run out of registers (or get itself into an
impossible situation). Instead of generating bad code, DICE issues
this error message and aborts. You can report the problem to us
(with the sample code of course), but in the meantime you can
continue to compile your code by breaking it up into smaller
subroutines.
C1:117
Internal Compiler error %d: %s
------------------------------
In an even rarer caes where the compiler has detected some impossible
state, it will issue this error message. Unfortunately there is no
cookbook way to get around this, but as a first stab, you should
clean up all other error messages which you have gotten in your code.
In order for us to fix this, we would need a complete compilable
sample.
C1:118
Can not read locale library file: %s
------------------------------------
When attemping to build a locale based program, the compiler was
unable to open up the file that was specified on the command line.
Please check the options to the compiler and run it again.
Additional problems could be related to the version of locale, but
this would be a rare case.
C1:119
unrelocatable data reference in const storage
---------------------------------------------
This occurs when you attempt to put a relocatable pointer into const
storage. Since by definition const is position independent, you will
need to change the declarations which are causing the problem or
compile with a different option.
C1:120
Can not open needed math library: %s
------------------------------------
When attempting to compile a code which uses floating point math,
DICE needs to open up the Amiga supplied math libraries. You will
either need to compile with a different math option or locate the
appropriate libraries on your system disks.