我是靠谱客的博主 重要魔镜,最近开发中收集的这篇文章主要介绍C++(11):assert, #error, static_assert,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

assert,用于运行时的检查,当表达式求值为false时,表示断言失败,运行时会报错

#include <string>
#include <iostream>
#include <assert.h>

using namespace std;

class Human{
public:
	void setName(string name)
	{
		assert(name.length() > 0);//设置的名字字符串不能为空
		m_name = name;
	}

	string getName()
	{
		return m_name;
	}
private:
	string m_name;
};

int main()
{
	Human xiaoMing;
	xiaoMing.setName("");
	cout<<xiaoMing.getName();
	return 0;
}

运行会报断言错误:Assertion failed! Expression: name.length() > 0 

该断言可以通过定义NDEBUG来关闭检查:

方法1:在#include <assert.h>前,先定义#define NDEBUG

方法2:编译的时候加入编译选项-DNDEBUG

#error,用于预编译期间的,通常与#ifdef或#ifndef相结合,用于判断某个编译条件是否满足或不满足条件,则输出自定义的编译错误信息:

#ifdef NDEBUG    //如果关闭了assert,提示需要启用assert
#error 

最后

以上就是重要魔镜为你收集整理的C++(11):assert, #error, static_assert的全部内容,希望文章能够帮你解决C++(11):assert, #error, static_assert所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部