纳兰容若
2022-04-19
老师 您好 我在cppreference上发现这个例子: assert((2*2==4) && "Yet another way to add assert message"); 老师说的断言失败给开发者发送自定义的错误消息 是这个意思么
作者回复: 正解!
共 2 条评论
3
zxk
2022-03-14
契约式编程是一种编程风格,类比商业中的服务供应商与客户的,将编程中划分为了服务提供方与服务调用方,两者之间的关系如下: 1. 服务提供方期望服务调用方能够遵循一定的规范进行调用,这是服务调用方应满足服务提供方定下的先验条件 2. 服务提供方退出时需要保证能够返回特定的结果,这是服务提供方承诺服务调用方定下的后验条件 3. 先验条件与后验条件之间的交集,在进入与退出之后都应保持不变 具体到编程来说,就是客户端遵循一定规范调用方法接口,方法内部会对函数做一定程度的检查(通常是断言 + 异常信息,但 C 中是 errno 的间接方式),客户端会期望方法接口具有特定的行为,并返回一个可预测的返回值。 个人浅显理解,不知道对不对。
作者回复: 讲解的很赞!
2
Luke
2022-09-20
来自江苏
一楼那个太妙了。。。我第一反应是自定义自己的assert宏。 没想到errno居然是线程安全的,跟我以前的印象不太一样了,只记得他是全局的,在此更新一下认知。