7-11 验证宏(verify)---PTA实验C++

这篇博客介绍了C++预处理器以及断言宏的概念,强调了预处理器在文本层面的作用。博主提出实现一个类似断言但始终启用且失败时不中止程序的验证宏,并给出了代码框架。博客内容包括输入和输出规格的描述,样例输入输出以及样例解释。最后,博主分享了完整的C++代码实现,并提到验证宏的适用场景和注意事项。
摘要由CSDN通过智能技术生成

一、题目描述

无需惊慌,C++缔造者Bjarne Stroustrup这句话说的CPP是C PreProcessor,即“C代码预处理器”。CPP根据#include #define #if #pragma等指令对文件进行处理。这种处理发生在编译之前,所以CPP叫“预处理器”。CPP完全是文本层面的处理,与C/C++语法无关。

C/C++的标准库提供了assert断言宏,用在程序中检查某些必须成立的条件,确保程序运行符合预期。assert(expr)的参数是一个表达式,如果表达式求值结果相当于false,那么断言失败。断言失败的后果在调试版程序中一般是报错然后中止程序。在定义NDEBUG宏、或VC的Release版时断言将被省略,因此断言的表达式不应进行业务处理。

时间有限,预处理指令我们只练习这一次,实现类似断言但总是启用、失败时不中止程序的验证宏verify

代码框架如下:

#include <iostream>
using namespace std;

static void verify_failed(const char* file, int line, const char* expr){
  // TODO: 仿照样例格式,在验证失败时输出位置和表达式。
}

// 为使源码行号__LINE__准确,验证宏写在了一行中。也可用反斜线续行。
// 表达式最后特意没加分号,使用时就不至于漏写分号。
// #x用了“Stringize”功能,将x对应的表达式转成字符串。这功能必须用CPP,无法用C++实现。
#de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xixixiLucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值