[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: error: redefinition of 'struct option'
From: |
Eric Blake |
Subject: |
Re: error: redefinition of 'struct option' |
Date: |
Wed, 17 Feb 2010 19:17:24 -0700 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 |
According to Bruce Korb on 2/17/2010 7:03 PM:
> make[3]: Entering directory `/old-home/gnu/proj/sharutils-bld/lib'
> make[4]: Entering directory `/old-home/gnu/proj/sharutils-bld/lib'
> gcc -DHAVE_CONFIG_H -I. -I.. -g -Wall -MT close-hook.o -MD -MP -MF
> .deps/close-hook.Tpo -c -o close-hook.o close-hook.c
> In file included from ./xstrtol.h:22,
> from ../config.h:1469,
> from close-hook.c:18:
> ./getopt.h:195: error: redefinition of 'struct option'
What platform is this on? Is this a fresh bootstrap, with a modern git
checkout, or are you doing some incremental builds where you might have an
out-of-date getopt.h that needs to be regenerated? Are you sure that
<config.h> is the first header included from withing close-hook.c?
> The *un*preprocessed gnulib-installed getopt.h has this:
>
>> #ifndef _GL_GETOPT_H
>>
>> #if __GNUC__ >= 3
>> #pragma GCC system_header
>> #endif
>>
>> /* The include_next requires a split double-inclusion guard. We must
>> also inform the replacement unistd.h to not recursively use
>> <getopt.h>; our definitions will be present soon enough. */
>> #if 1
>> # define _GL_SYSTEM_GETOPT
>> # include_next <getopt.h>
>> # undef _GL_SYSTEM_GETOPT
>> #endif
>>
>> #ifndef _GL_GETOPT_H
>
> That looks wrong to me. I guess the include_next will
> define _GL_GETOPT_H sometimes if _GL_SYSTEM_GETOPT is defined.
No, it is correct. It is defining _GL_GETOPT_H so that the
gnulib-installed <unistd.h> won't try to do stupid things if the system
<getopt.h> tries to include <unistd.h>.
> OK. Whatever. The problem is that I'm getting "struct option"
> defined twice. The second "#ifndef _GL_GETOPT_H" should be trained
> to cope with a valid getopt.h that doesn't understand _GL_SYSTEM_GETOPT.
The _only_ getopt.h that understands _GL_SYSTEM_GETOPT is gnulib's
getopt.h. No one else should be defining or undefining that symbol, and
only gnulib's unistd.h should be checking if it is defined.
--
Don't work too hard, make some time for fun as well!
Eric Blake address@hidden
signature.asc
Description: OpenPGP digital signature
- error: redefinition of 'struct option', Bruce Korb, 2010/02/17
- Re: error: redefinition of 'struct option',
Eric Blake <=
- Re: error: redefinition of 'struct option', Bruce Korb, 2010/02/18
- Re: error: redefinition of 'struct option', Bruno Haible, 2010/02/18
- Re: error: redefinition of 'struct option', Bruce Korb, 2010/02/18
- Re: error: redefinition of 'struct option', Bruce Korb, 2010/02/18
- Re: error: redefinition of 'struct option', Bruno Haible, 2010/02/18
- Re: error: redefinition of 'struct option', Bruce Korb, 2010/02/18
- new gnulib-tool option --find, Bruno Haible, 2010/02/19
- Re: error: redefinition of 'struct option', Bruce Korb, 2010/02/18
- Re: error after adding #includes to config.h, Bruno Haible, 2010/02/18
- Re: error after adding #includes to config.h, Bruce Korb, 2010/02/18