|
From: | Zack Weinberg |
Subject: | Re: Turn on compiler warnings by default for AC_PROG_CC, AC_PROG_CXX & AC_PROG_FC |
Date: | Fri, 17 Jan 2014 17:21:09 -0500 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 |
On 2014-01-17 4:02 PM, David A. Wheeler wrote:
Zack Weinberg said:For GCC I would be quite hesitant to turn anything on beyond -Wall without explicit buy-in from the project, but I like the idea of enabling -Wall by default.I pretty sure that's what Dale Visser's patch does. It says: + "-pedantic % -Wall" dnl GCC Dale Visser's patch does include a comment that says: +# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result +# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. But I think this comment is no longer true. It appears to me that the code is just trying to see if "-pedantic" *WORKS*, and if it does, then using that as evidence that "-Wall" would work.
Oh, is that what "-pedantic % -Wall" means? I had the impression it was going to try each one in isolation and include the subset that worked.
Despite the dire things the GCC manual says about -pedantic, it is not hard to write *new* code that is -pedantic clean, or -Wextra clean, etc; I would support an opt-in mechanism for enabling a much more aggressive set of warnings, and recommending its use in the manual for new projects. But any such thing has a high probability of breaking *old* code, hence my earlier comments. Also, as long as stock Autoconf checks are sloppy (e.g. AC_CHECK_FUNCS and its habit of blindly declaring everything as "char foo();") we will need to distinguish warnings enabled for the *project* from warnings enabled for the *configure script*.
-ansi, however, should not be in there at all; it doesn't just turn on strict conformance mode, it turns on strict *C89* conformance mode, which is often wrong for new code. And even nowadays, strict conformance mode in general tends to break system headers.
zw
[Prev in Thread] | Current Thread | [Next in Thread] |