A C++ implementation that detects undefined behavior?

后端 未结 10 1367
没有蜡笔的小新
没有蜡笔的小新 2020-11-27 14:13

A huge number of operations in C++ result in undefined behavior, where the spec is completely mute about what the program\'s behavior ought to be and allows for anything to

10条回答
  •  眼角桃花
    2020-11-27 14:38

    Using g++

    -Wall -Werror -pedantic-error
    

    (preferably with an appropriate -std argument as well) will pick up quite a few case of U.B.


    Things that -Wall gets you include:

    -pedantic
    Issue all the warnings demanded by strict ISO C and ISO C++; reject all programs that use forbidden extensions, and some other programs that do not follow ISO C and ISO C++. For ISO C, follows the version of the ISO C standard specified by any -std option used.

    -Winit-self (C, C++, Objective-C and Objective-C++ only)
    Warn about uninitialized variables which are initialized with themselves. Note this option can only be used with the -Wuninitialized option, which in turn only works with -O1 and above.

    -Wuninitialized
    Warn if an automatic variable is used without first being initialized or if a variable may be clobbered by a "setjmp" call.

    and various disallowed things you can do with specifiers to printf and scanf family functions.

提交回复
热议问题