Shouldn't this work?
gwyn at BRL-VLD.ARPA
gwyn at BRL-VLD.ARPA
Fri Aug 24 09:14:59 AEST 1984
From: Doug Gwyn (VLD/VMB) <gwyn at BRL-VLD.ARPA>
There is nothing wrong with your example. I suspect you are using
an old (pre-UNIX System V) portable C compiler (e.g. UNIX System III
or 4.[12]BSD); these do not correctly handle pointers to void-
valued functions. Lint is built from PCC sources and has the same
problem. Starting with Release 1.0 of UNIX System V, the portable
C compiler and lint handled this correctly. I tried the Gould UTX
C compiler on this very thing and it is better than usual, but not
yet perfect.
I believe that the reason that the signal() function has been
misdefined for so long is that the compilers could not handle
the correct type declaration. I urge the UNIX developers to FIX
THIS now that their compilers are working:
extern void (*signal())();
#define SIG_DFL (void (*)())0
#define SIG_IGN (void (*)())1
More information about the Comp.lang.c
mailing list