C++中assert宏(2-2)

    技术2023-09-11  90

    3 关闭assert()

    是否定义了预处理器变量NDEBUG,控制了assert宏的开关。默认情况下,没有定义预处理器变量NDEBUG,此时assert宏的处于开启状态,即该宏起作用,当定义了NDEBUG后,assert宏的处于关闭状态,即该宏将不再起作用。

    可以通过添加代码、修改解决方案配置和添加预处理器定义三种方式关闭assert。

    3.1 添加代码

    在“2.1 头文件”中提到,assert宏在assert.h/cassert头文件中定义。在包含该头文件的代码之前,使用如下代码定义NDEBUG。

    #define NDEBUG

    一般把该行代码放在stdafx.h中即可。

    3.2 修改解决方案配置

    以VS2015为例,选择VS2015的菜单栏“生成->配置管理器”,在“配置管理器”对话框中“活动解决方案配置”选择为“Release”,如图2所示。

     

    图2 修改解决方案配置

    3.3 添加预处理器定义

    在VS2015中选择菜单栏“项目->XXX属性”,之后在弹出的“XXX属性页”对话框中,选择左侧的“配置属性->C/C++->预处理器”,接下来在右侧的“预处理器定义”中添加NDEBUG的定义,如图3所示。

     

    图3 添加预处理器定义

    需要注意的是,添加的NDEBUG前面有分号。

    Processed: 0.008, SQL: 9