Echelon Neuron User Manual
Page 60
52
Neuron C Compiler Errors (NCC)
NCC#
Description
55
Storage class on struct/union field not permitted [NCC#55]
A field in a struct or union may not have a storage class, and may not
contain the word typedef. Nor can it be a message tag, a timer object, nor a
network variable, nor can it have bind_info. Note also that a union may
not contain bitfields.
56
Enum constant out of range [NCC#56]
In Neuron C as in ANSI C, an enumerated type, declared using the enum
keyword, is equivalent to an int type. The int type is signed. In Neuron C,
an int is implemented using 8-bit signed two’s complement representation.
Thus, the valid range of enumerated type values is –128 to +127.
57
Enum value wrapped around to negative [NCC#57]
The enumerated type automatically assigns consecutive integers as the
values of the named constants unless specifically given a value for a
constant. When
literal-constant-n
has the value 127, and
literal-constant-
n+1
appears, the compiler automatically assigns it the “next” value. In
Neuron C, this value is -128 (since the enum type is signed in ANSI C).
The compiler issues a warning diagnostic for this condition, and proceeds.
58
Nothing was declared [NCC#58]
Similar to
Declaration defaults to ‘int’,
No declaration for formal
parameter - int assumed
, in a situation like the following:
long; int j;
This is legal C, but may not be what the programmer intended. Thus, for
the “first” declaration (the statement long;) this diagnostic is produced.
Many C compilers do not issue a warning in these circumstances. Note
that Neuron C will
not
issue a warning in the following cases, since
something
is
being declared (namely the enum's or the struct field names,
respectively):
enum { FALSE, TRUE } ;
struct { int a; int b; };
59
Expression type mismatch [NCC#59]
These error diagnostics result from combining expressions of conflicting
types, such as assigning an int to a pointer, or a pointer of one type to a
pointer to another type, or in using objects that have no value (such as
message tags or I/O object names) in expressions.
In many cases in ANSI C, you must use an explicit type cast. However,
note that casting should be avoided if possible, as it is often masking poor
programming practice.
60
Invalid subscript operation [NCC#60]
The compiler outputs this diagnostic when an array-index operator
[
expr
] is applied to a variable that is not a pointer or an array.