Portability enhancing C extension
Damon Permezel
dapermezel at watmath.UUCP
Sat Oct 1 07:09:51 AEST 1983
The addition of the ability to type the expected args of an external function
is definitely needed in C. All you VAX-C programmers have lead a sheltered
life and can't be expected to realise the need. Consider the much abused
f(0);
where 'f' is
f(p)
char *p; { ... }
This works fine on the VAX, but will not work on a HW level-6, which has
different sizes for each of 'int', 'int *' and 'char *'. It will also fail
on the 68000, where sizeof(int) == 2 and sizeof(int *) == sizeof(char *) == 4.
When we ported our compiler source from the HW DPS/8 (sizeof(most_stuff) == 4)
to the level-6, we had one hell of a time (we had no lint then). If my
language extension that allows
extern f(char *);
had been working then, most of the problems would have gone away with the
inclusion of a "ext_def.h" file that defined the arg types, allowing the
compiler to add the cast where necessary.
I was very reluctant to add any language extensions to my parser, but
this one i definitely consider worthwhile.
=damon
More information about the Comp.lang.c
mailing list