{ cmake }

  • 补充:更严格的编译指令(Linux)

    /

    更严格的编译指令(Linux)

    # helpful compiler flags for gcc/clang
    <!--more-->
    # the descriptions for these flags can be found on the GNU Compiler Collection's webpage.
    add_compile_options(
    -Wall
    -Wextra
    -Werror
    -pedantic-errors
    -Wconversion
    -Wsign-conversion
    -Wdouble-promotion
    -Wcast-align
    -Wformat=2
    -Wuninitialized
    -Wnull-dereference
    -Wnon-virtual-dtor
    -Woverloaded-virtual
    -Wdeprecated-copy-dtor
    -Wold-style-cast
    -Wzero-as-null-pointer-constant
    -Wsuggest-override
    -fstack-protector-strong
    )

    解释:

    1. -Wall:打开几乎所有的警告信息,除了一些非常具体或不常见的问题。

    2. -Wextra:打开额外的警告信息,比 -Wall 更加严格。

    3. -Werror:将所有警告视为错误。

    4. -pedantic-errors:将所有语言不兼容的警告视为错误。

    5. -Wconversion:警告隐式转换可能导致精度损失的情况。

    6. -Wsign-conversion:警告隐式转换可能导致符号改变的情况。

    7. -Wdouble-promotion:警告隐式将 float 转换为 double 的情况。

    8. -Wcast-align:警告指针转换可能导致对齐问题的情况。

    9. -Wformat=2:启用更严格的格式字符串检查。

    10. -Wuninitialized:警告使用未初始化的变量。

    11. -Wnull-dereference:警告解引用空指针的情况。

    12. -Wnon-virtual-dtor:警告非虚析构函数的使用,这可能在多态类中导致问题。

    13. -Woverloaded-virtual:警告重载的虚函数可能导致意外行为。

    14. -Wdeprecated-copy-dtor:警告使用已弃用的复制构造函数或析构函数。

    15. -Wold-style-cast:警告使用旧式 C 风格的类型转换。

    16. -Wzero-as-null-pointer-constant:警告使用字面量 0 作为空指针常量。

    17. -Wsuggest-override:在适当的地方建议使用 override 来明确虚函数的重写。

    18. -fstack-protector-strong:启用强栈保护,以防止栈溢出攻击。