Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mel.connect.com.au!munnari.OZ.AU!spool.mu.edu!howland.reston.ans.net!blackbush.xlink.net!rz.uni-karlsruhe.de!news.uni-stuttgart.de!schweikh
From: schweikh@itosun.ito.uni-stuttgart.de (Jens Schweikhardt)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Bogus gcc warning for SIG_DFL
Date: 2 Jan 1996 22:53:39 GMT
Organization: Comp.Center (RUS), U of Stuttgart, FRG
Lines: 29
Message-ID: <4ccd1j$1l8i@info4.rus.uni-stuttgart.de>
NNTP-Posting-Host: itosun.ito.uni-stuttgart.de
Hello,
Using SIG_DFL and compiling with -Wall gives a bogous warning. For
#include <signal.h>
...
signal (SIGALRM, SIG_DFL);
gcc -Wall says
main.c:46: warning: function declaration isn't a prototype
grepping for the SIG_DFL macro I find
/usr/include/sys/signal.h:#define SIG_DFL (void (*)(int))0
/usr/include/sys/signal.h:#define SIG_DFL (void (*)())0
of which two the latter one is the culprit; it is an oldstyle cast.
The first define is only taken when _ANSI_SOURCE is defined before
inclusion of <signal.h>. Alas, defining _ANSI_SOURCE lets hell break
lose: 50% of what's in <stdlib.h> is not prototyped anymore.
I wonder why SIG_DFL is defined differently at all, depending on _ANSI_SOURCE.
The 'native' gcc is an ANSI compiler, so why worry about providing an old style
cast? Someone care to explain?
Bye, Jens
--
SIGSIG -- signature too long (core dumped)