Ron <[EMAIL PROTECTED]> writes:
> On Tue, Mar 14, 2006 at 03:12:29PM -0800, Ben Pfaff wrote:
>> Ron <[EMAIL PROTECTED]> writes:
>>
>> > With my current gcc (4.0.2-10), the following code:
>> >
>> > int main() { return 0; }
>> >
>> > Will warn: function declaration isn't a prototype
>> > if compiled with -Wstrict-prototypes.
>> >
>> > Since that is the signature for main which autoconf wraps its tests in
>> > when creating conftest.c -- then tests which should normally succeed,
>> > will fail if the language is C, and CPPFLAGS include -Wstrict-prototypes,
>> > and -Werror (the latter being my preferred habit for release builds).
>>
>> It's not reasonable to expect autoconf to work properly with
>> -Werror. When the next version of GCC comes out, it may add any
>> number of new warnings for code that is currently accepted
>> silently. Autoconf doesn't have any way to predict what these
>> new warnings will be.
[...]
> If the reason that autoconf now compiles headers instead of just
> preprocessing them, is 'realism' -- something they seem to emphasise
> quite a lot -- then surely any new warning in an existing test is
> a good thing to know and fix as well.
The "realism" that Autoconf emphasizes is that if something works
in a test, it should work later when compiling real code as
well. -Werror goes far beyond that: it breaks the tests *and*
the real code too.
> I'm not suggesting -Werror should be the default for autoconf,
> just asking that it have a _chance_ of working, without something
> as fundamental as an illegal (or at least non-standard) main()
> function getting in the way.
There is nothing illegal or non-standard about writing "int
main() { return 0; }". If you think so, you clearly do not
understand the C standard very well. Every standard C compiler,
for both the old C89 and the current C99 standard, must accept
the code above. Adding -Werror transforms GCC into a compiler
for a language that is not C.
>> I too like to use -Werror for writing code. But I don't pass it
>> to Autoconf. And I recommend that you not do so as well.
>
> If you can assure me that this is the opinion of upstream, and/or
> offer a good reason to not use one of the standard signatures for
> main (which seems like a no-brainer in every respect otherwise),
> then I might understand this.
I repeat: "int main()" is perfectly acceptable in all standard C
variants, and GCC with -Werror is not a C compiler.
> Otherwise, don't you think it is the sort of thing we ought to
> punt to them before ruling it out so summarily? Or do you speak
> with an upstream hat to wear?
I do not have an upstream hat, but I disagree that this is a
bug. If you want to take it to upstream, go ahead, but I will
not do so for you.
--
"Unix... is not so much a product
as it is a painstakingly compiled oral history
of the hacker subculture."
--Neal Stephenson
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]