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前面有分號。