How to use clang++ with -std=c++11 -Weverything -Werror

前端 未结 1 579
无人及你
无人及你 2020-12-05 11:21

I want to compile the following file (temp.cpp):

#include  

class Foo {
public:
  Foo() = default;
};

int main(){
  std::cout << \"Wo         


        
相关标签:
1条回答
  • 2020-12-05 11:25

    Actually, you probably do not want all the warnings, because a number of warnings can be considered as being stylistic or subjective and others (such as the one you ran afoul of) are just stupid in your situation.

    -Weverything was initially built for two reasons:

    • discovery: it's pretty hard otherwise to get a list of all available warnings
    • black-listing alternative: with gcc, you cherry pick the warnings you wish to apply (white-listing), with -Weverything you cherry pick those you do not wish to apply; the advantage is that when moving over to a new version of the compiler, you are more likely to benefit from new warnings

    Obviously, discovery is not really compatible with production use; therefore you seem to fall in the black-listing case.

    Clang diagnostics system will output (by default) the name of the most specific warning group that is responsible for generating a warning (here -Wc++98-compat) and each warning group can be turned off by adding no- right after the -W.

    Therefore, for blacklisting, you get:

    -Weverything -Wno-c++98-compat -Wno-...
    

    And you are encouraged to revise the list of blacklisted warnings from time to time (for example, when you upgrade to a newer compiler).

    0 讨论(0)
提交回复
热议问题