In the, D in the, Library files – Zilog Z8F0130 User Manual
Page 282: Not required for freestanding implementation, Const correctness in the standard header files, Ansi promotions disabled
Using the ANSI C-Compiler
UM013037-1212
258
Zilog Developer Studio II – Z8 Encore!
User Manual
Const Correctness in the Standard Header Files
In general, Zilog header files are not
const
correct due to the issue raised in the
section on page 257. In the Zilog library, for example,
strcpy
is
(effectively) declared as:
char* strcpy( char* dst, char* src);
but the ANSI standard requires
char* strcpy( char* dst, const char* src);
As noted, this is done to avoid compile-time errors if the deprecated
const
variables in
ROM compilation option were selected and then
strcpy()
was called with an argument
for
src
that had not been declared
const
.
ANSI Promotions Disabled
The ANSI standard requires that integer variables smaller than
int
(such as
char
) always
be promoted to
int
before any computation.
The Z8 Encore! C-Compiler is ANSI compliant in this regard when ANSI promotions are
enabled. The C-Compiler analyzes and promotes variables smaller than
int
to
int
, only
where necessary to mimic the ANSI behavior.
As an example, for the following statement:
char ch1, ch2, ch3;
ch1 = ch2 * ch3;
The compiler does not promote
ch2
and
ch3
to
int
before the multiplication operation,
so the
char
result is not affected.
For the following statement:
char ch2, ch3;
int ii;
ii = ch2 * ch3;
The compiler promotes
ch2
and
ch3
to
int
before the multiplication operation, so the
result is of type
int
.
The Z8 Encore! C-Compiler also provides a deprecated option to disable ANSI promo-
tions. The ANSI behavior is not guaranteed when this option is selected, and Zilog does
not recommend using this option.
Library Files Not Required for Freestanding Implementation
section on page 255, only four of the stan-
dard library header files are required by the standard to be supported in a freestanding
- Z8F0131 Z8F0230 Z8F0231 Z8F0430 Z8F0431 Z8F043A Z8F0830 Z8F0831 Z8F083A Z8F1232 Z8F1233 Z8F0113 Z8F011A Z8F0123 Z8F012A Z8F0213 Z8F021A Z8F0223 Z8F022A Z8F0411 Z8F0412 Z8F0413 Z8F041A Z8F0421 Z8F0422 Z8F0423 Z8F042A Z8F0811 Z8F0812 Z8F0813 Z8F081A Z8F0821 Z8F0822 Z8F0823 Z8F082A Z8F0880 Z8F1621 Z8F1622 Z8F1680 Z8F1681 Z8F1682 Z8F2421 Z8F2422 Z8F2480 Z8F3221 Z8F3222 Z8F3281 Z8F3282 Z8F4821 Z8F4822 Z8F4823 Z8F6081 Z8F6082 Z8F6421 Z8F6422 Z8F6423 Z8F6481 Z8F6482 Z8FS021A ZMOT1AHH Z8FS040B ZMOT0BHH ZMOT0BSB Z8FMC04 Z8FMC08 Z8FMC16