Next: 1.5 System Requirements
Up: 1. Introduction
Previous: 1.3 Typographic conventions
Contents
Index
1.4 Compatibility with previous
versions
Newer versions have usually numerous bug fixes compared with the previous
version. But we also sometimes introduce some incompatibilities with
older versions. Not just for the fun of it, but to make the compiler
more stable, efficient and ANSI compliant
(see section
for ANSI-Compliance).
- short is now equivalent to int (16 bits), it used to be equivalent
to char (8 bits) which is not ANSI compliant. To maintain compatibility,
old programs may be compiled using the --short-is-8bits commandline
option (see lyx:-short-is-8bits).
- the default directory for gcc-builds where include, library and documentation
files are stored is now in /usr/local/share.
- char type parameters to vararg
functions are casted to int unless explicitly casted and --std-c89
and --std-c99 command line
option are not defined , e.g.:
char a=3;
printf (%d %c\n,
a, (char)a);
will push a as an int and as a char resp if --std-c89
and --std-c99 command line
options are not defined,
will push a as two ints if --std-c89
or --std-c99 command line
option is defined.
- option --regextend has been removed.
- option --noregparms has been removed.
- option --stack-after-data has been removed.
- bit and sbit types
now consistently behave like the C99 _Bool type with respect to type
conversion. The most
common incompatibility resulting from this change is related to bit
toggling idioms, e.g.:
bit b;
b = ~b;
/* equivalent to b=1 instead of toggling b */
b = !b; /* toggles b */
In previous versions, both forms would have toggled the bit.
<pending: more incompatibilities?>
Next: 1.5 System Requirements
Up: 1. Introduction
Previous: 1.3 Typographic conventions
Contents
Index
2009-03-15