conundrum: _C99_SOURCE vs. sigset

Stefan Farfeleder stefan at fafoe.narf.at
Fri Aug 4 06:38:34 UTC 2006


On Thu, Aug 03, 2006 at 03:47:34PM -0400, Mikhail Teterin wrote:
> Hello!
> 
> I'm trying to compile a program, which uses threads and has its own daemon 
> global variable.
> 
> The variable's declaration results in an error:
> 
> recsnap.C:50: error: `RTRString daemon' redeclared as different kind of symbol
> /usr/include/stdlib.h:252: error: previous declaration of `int daemon(int, 
> int)'
> 
> The daemon()'s declaration in stdlib.h can be turned off by declaring either 
> _C99_SOURCE or _ANSI_SOURCE. Unfortunately, both of these defines also turn 
> off the declaration of sigset_t and fd_set:
> 
> /usr/include/pthread.h:233: error: expected `,' or `...' before '*' token
> .../include/rtr/selectni.h:129: error: `fd_set' does not name a type
> 
> Can this be solved -- without modifying the vendor's code? Thanks!

Try -D_POSIX_C_SOURCE=200112.

The macro _C99_SOURCE is for pure C99 code and _ANSI_SOURCE for C90
code.  Both don't include the <pthread.h> header.

Stefan


More information about the freebsd-standards mailing list