Re: constexpr keyword is unnecessary

Liste des GroupesRevenir à cl c  
Sujet : Re: constexpr keyword is unnecessary
De : david.brown (at) *nospam* hesbynett.no (David Brown)
Groupes : comp.lang.c
Date : 27. Oct 2024, 15:21:09
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vfli8m$fkhq$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13
User-Agent : Mozilla Thunderbird
On 26/10/2024 17:08, James Kuyper wrote:
On 10/26/24 10:07, Vir Campestris wrote:
On 22/10/2024 13:48, Thiago Adams wrote:
>
I think a more generic feature would be to have a standard way of
promoting selected warnings to errors. This would avoid stacking
features with small differences, such as treating constexpr as a special
case compared to other constant expressions in C.
>
I have in the past had coding standards that require you to fix all
warnings. After all, sometimes they do matter.
 I disapprove of that policy. A conforming implementation is free to warn
about anything, even about your failure to use taboo words as
identifiers. While that's a deliberately silly example, I've seen a fair
number of warnings that had little or no justification.
The purpose of warnings is to tell you that there might be a problem. If
the compiler is certain that there's a problem, it should generate an
error message, not a warning. Therefore, treating warnings as if they
were error messages means that you're not doing your job, as the
developer, to determine whether or not the code is actually problematic.
I disagree with you here.
But there is an extra condition involved - without it, you have a fair point.
The choice of compiler (or linter) warnings needs to be appropriate - it needs to be an active decision based on real requirements that are appropriate for the kind of coding task and development style in question.  If someone things they can use "-Wall -Wextra" and all warnings are bugs in the code (or, worse, all bugs in the code lead to warnings), then they are not going to get a good development procedure by adding "-Werror".  The set of warnings /I/ use for /my/ code are not going to match the set that is appropriate for /your/ code - we will each have things in our code that the other things is unacceptable as a risk of error (now or in future maintenance), compatibility, portability, etc.
The compiler warnings also need to be stable.  It is not enough to say that we have decided that "-Wall -Wnounused-function -Wmaybe-uninitialized" is sufficient for your project and coding standards unless you can make fixed requirements on exact compiler versions.  Otherwise, using different compilers or versions can change the warning set.  (I'm using gcc flags in examples - other compilers have other flags.)
When I enable a warning in my builds, it is matching a policy I want for the way I write my code - it enforces a restriction in what I can write.   For example, I generally use enumerated types for states, and it is not uncommon to have a switch statement for dealing with a particular state variable.  So I have "-Wswitch-enum" to give a warning if I've missed out a possible state.  I make that warning an error.  To me, for my code, it is just as much an error in the code if I have added a new state to the enumeration but forgotten to handle it somewhere, as if I had removed a state from the enumeration but forgotten to remove it from the handlers (that would always be a compile-time error).
Good warnings are essential to development.  They are automated checks and catch mistakes early.  Of course they don't catch all mistakes, but they are part of the process - every tool or development procedure that reduces the chances of an error in the final released product is a good thing.  Static checks are very low cost, automated, and come early in the code-compile-test-release cycle and it is thus much easier and cheaper to handle problems found at this point than if they are found later on.
So a good set of warnings is useful to have.  But warnings from compilers don't stop builds.  If you have a typical build process with a makefile (or similar build system) and a bunch of source files, and run "make -j", you'll get lots of outputs and your warnings might be hard to spot, getting lost in the noise.  Running "make" again won't help - files with no errors will not be recompiled, and it will look like your build is nice and clean with no problems or warnings.  Thus once your project is at a stage in development where you expect to see no or few warnings, "-Werror" is key - then you can't miss the warnings.
Of course there will be situations where you'll have false positives - warnings about something that you know is correct in your code.  You will then have to mark this in your code somehow - it might be a slightly different code construct, a compiler-specific attribute, a pragma to disable the warning at that particular point (or for that whole file).  These are definite actions - you are, in effect, noting that this particular piece of code does not clearly comply with your coding policies or standards, and needs to be marked as unusual.  (If this is happening more than occasionally, then go back to your set of warnings and ask if they match the policies you want - or if your policies are appropriate in the first place.)

Date Sujet#  Auteur
11 Oct 24 * constexpr keyword is unnecessary106Thiago Adams
11 Oct 24 +* Re: constexpr keyword is unnecessary25Bonita Montero
11 Oct 24 i`* Re: constexpr keyword is unnecessary24Thiago Adams
11 Oct 24 i `* Re: constexpr keyword is unnecessary23Bonita Montero
11 Oct 24 i  `* Re: constexpr keyword is unnecessary22Thiago Adams
12 Oct 24 i   +* Re: constexpr keyword is unnecessary16Bonita Montero
12 Oct 24 i   i`* Re: constexpr keyword is unnecessary15Thiago Adams
12 Oct 24 i   i `* Re: constexpr keyword is unnecessary14Bonita Montero
12 Oct 24 i   i  `* Re: constexpr keyword is unnecessary13Thiago Adams
13 Oct 24 i   i   `* Re: constexpr keyword is unnecessary12Bonita Montero
13 Oct 24 i   i    +* Re: constexpr keyword is unnecessary2Thiago Adams
13 Oct 24 i   i    i`- Re: constexpr keyword is unnecessary1Bonita Montero
15 Oct 24 i   i    `* Re: constexpr keyword is unnecessary9DFS
15 Oct 24 i   i     `* Re: constexpr keyword is unnecessary8Bonita Montero
15 Oct 24 i   i      `* Re: constexpr keyword is unnecessary7Bart
15 Oct 24 i   i       +* Re: constexpr keyword is unnecessary3Thiago Adams
15 Oct 24 i   i       i+- Re: constexpr keyword is unnecessary1Bonita Montero
16 Oct 24 i   i       i`- Re: constexpr keyword is unnecessary1Janis Papanagnou
15 Oct 24 i   i       `* Re: constexpr keyword is unnecessary3Kaz Kylheku
16 Oct 24 i   i        +- Re: constexpr keyword is unnecessary1Bonita Montero
16 Oct 24 i   i        `- Re: constexpr keyword is unnecessary1Janis Papanagnou
13 Oct 24 i   `* Re: constexpr keyword is unnecessary5Kaz Kylheku
13 Oct 24 i    `* Re: constexpr keyword is unnecessary4Thiago Adams
13 Oct 24 i     +- Re: constexpr keyword is unnecessary1Bonita Montero
13 Oct 24 i     `* Re: constexpr keyword is unnecessary2Kaz Kylheku
13 Oct 24 i      `- Re: constexpr keyword is unnecessary1Thiago Adams
12 Oct 24 +* Re: constexpr keyword is unnecessary21Bart
12 Oct 24 i`* Re: constexpr keyword is unnecessary20Thiago Adams
13 Oct 24 i `* Re: constexpr keyword is unnecessary19Bart
13 Oct 24 i  `* Re: constexpr keyword is unnecessary18Thiago Adams
13 Oct 24 i   `* Re: constexpr keyword is unnecessary17Bonita Montero
13 Oct 24 i    `* Re: constexpr keyword is unnecessary16Thiago Adams
13 Oct 24 i     +* Re: constexpr keyword is unnecessary11Bonita Montero
13 Oct 24 i     i`* Re: constexpr keyword is unnecessary10Thiago Adams
13 Oct 24 i     i `* Re: constexpr keyword is unnecessary9Bonita Montero
13 Oct 24 i     i  `* Re: constexpr keyword is unnecessary8Janis Papanagnou
13 Oct 24 i     i   `* Re: constexpr keyword is unnecessary7Bonita Montero
13 Oct 24 i     i    `* Re: constexpr keyword is unnecessary6Janis Papanagnou
13 Oct 24 i     i     `* Re: constexpr keyword is unnecessary5Bonita Montero
13 Oct 24 i     i      +* Re: constexpr keyword is unnecessary2Thiago Adams
13 Oct 24 i     i      i`- Re: constexpr keyword is unnecessary1Bonita Montero
13 Oct 24 i     i      `* Re: constexpr keyword is unnecessary2Janis Papanagnou
13 Oct 24 i     i       `- Re: constexpr keyword is unnecessary1Bonita Montero
13 Oct 24 i     `* Re: constexpr keyword is unnecessary4Michael S
13 Oct 24 i      `* Re: constexpr keyword is unnecessary3Thiago Adams
13 Oct 24 i       `* Re: constexpr keyword is unnecessary2Michael S
13 Oct 24 i        `- Re: constexpr keyword is unnecessary1Thiago Adams
19 Oct 24 `* Re: constexpr keyword is unnecessary59Keith Thompson
19 Oct 24  +- Re: constexpr keyword is unnecessary1Bonita Montero
19 Oct 24  `* Re: constexpr keyword is unnecessary57Thiago Adams
19 Oct 24   +* Re: constexpr keyword is unnecessary53David Brown
19 Oct 24   i+* Re: constexpr keyword is unnecessary9Bart
20 Oct 24   ii`* Re: constexpr keyword is unnecessary8David Brown
20 Oct 24   ii `* Re: constexpr keyword is unnecessary7Keith Thompson
21 Oct 24   ii  +- Re: constexpr keyword is unnecessary1Opus
21 Oct 24   ii  `* Re: constexpr keyword is unnecessary5David Brown
21 Oct 24   ii   `* Re: constexpr keyword is unnecessary4Keith Thompson
21 Oct 24   ii    `* Re: constexpr keyword is unnecessary3Chris M. Thomasson
22 Oct 24   ii     `* Re: constexpr keyword is unnecessary2Kaz Kylheku
22 Oct 24   ii      `- Re: constexpr keyword is unnecessary1Chris M. Thomasson
19 Oct 24   i+* Re: constexpr keyword is unnecessary40Thiago Adams
19 Oct 24   ii+* Re: constexpr keyword is unnecessary36Keith Thompson
20 Oct 24   iii+* Re: constexpr keyword is unnecessary33Thiago Adams
20 Oct 24   iiii`* Re: constexpr keyword is unnecessary32Keith Thompson
20 Oct 24   iiii +- Re: constexpr keyword is unnecessary1Michael S
20 Oct 24   iiii `* Re: constexpr keyword is unnecessary30Thiago Adams
22 Oct 24   iiii  `* Re: constexpr keyword is unnecessary29Bonita Montero
22 Oct 24   iiii   `* Re: constexpr keyword is unnecessary28Thiago Adams
26 Oct 24   iiii    `* Re: constexpr keyword is unnecessary27Vir Campestris
26 Oct 24   iiii     +* Re: constexpr keyword is unnecessary24James Kuyper
26 Oct 24   iiii     i+* Re: constexpr keyword is unnecessary6Janis Papanagnou
27 Oct 24   iiii     ii`* Re: constexpr keyword is unnecessary5Tim Rentsch
4 Nov 24   iiii     ii `* Re: constexpr keyword is unnecessary4Tim Rentsch
4 Nov 24   iiii     ii  `* Re: constexpr keyword is unnecessary3Lowell Gilbert
4 Nov 24   iiii     ii   +- Re: constexpr keyword is unnecessary1Kaz Kylheku
7 Nov 24   iiii     ii   `- Re: constexpr keyword is unnecessary1Tim Rentsch
27 Oct 24   iiii     i+* Re: constexpr keyword is unnecessary2Tim Rentsch
27 Oct 24   iiii     ii`- Re: constexpr keyword is unnecessary1David Brown
27 Oct 24   iiii     i+- Re: constexpr keyword is unnecessary1David Brown
28 Oct 24   iiii     i`* Re: constexpr keyword is unnecessary14Kaz Kylheku
28 Oct 24   iiii     i `* Re: constexpr keyword is unnecessary13Thiago Adams
29 Oct 24   iiii     i  +* Re: constexpr keyword is unnecessary10Kaz Kylheku
29 Oct 24   iiii     i  i+* Re: constexpr keyword is unnecessary8Thiago Adams
29 Oct 24   iiii     i  ii+* Re: constexpr keyword is unnecessary5Thiago Adams
29 Oct 24   iiii     i  iii`* Re: constexpr keyword is unnecessary4David Brown
29 Oct 24   iiii     i  iii +* Re: constexpr keyword is unnecessary2Thiago Adams
29 Oct 24   iiii     i  iii i`- Re: constexpr keyword is unnecessary1David Brown
30 Oct 24   iiii     i  iii `- Re: constexpr keyword is unnecessary1Janis Papanagnou
29 Oct 24   iiii     i  ii`* Re: constexpr keyword is unnecessary2Kaz Kylheku
5 Nov 24   iiii     i  ii `- Re: constexpr keyword is unnecessary1Tim Rentsch
5 Nov 24   iiii     i  i`- Re: constexpr keyword is unnecessary1Tim Rentsch
29 Oct 24   iiii     i  `* Re: constexpr keyword is unnecessary2Richard Harnden
29 Oct 24   iiii     i   `- Re: constexpr keyword is unnecessary1Thiago Adams
27 Oct 24   iiii     `* Re: constexpr keyword is unnecessary2Tim Rentsch
27 Oct 24   iiii      `- Re: constexpr keyword is unnecessary1David Brown
20 Oct 24   iii`* Re: constexpr keyword is unnecessary2Thiago Adams
20 Oct 24   iii `- Re: constexpr keyword is unnecessary1Bonita Montero
20 Oct 24   ii`* Re: constexpr keyword is unnecessary3David Brown
20 Oct 24   ii `* Re: constexpr keyword is unnecessary2Bart
20 Oct 24   ii  `- Re: constexpr keyword is unnecessary1David Brown
19 Oct 24   i`* Re: constexpr keyword is unnecessary3Keith Thompson
19 Oct 24   `* Re: constexpr keyword is unnecessary3Michael S

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal