August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
我们经常需要为不变式、前置条件等编写可选的运行时检验,目前对此还没有通用的、标准的方法。为此,已为C++20提出了一种合约机制[Garcia,2016][Garcia,2018]。一些用户想依赖检验来保证程序的正确性——在调试时进行全面的运行时检验,而随后部署的代码包含尽量少的检验,合约的目标是为此提供支持。一些组织依赖系统、全面的检验,在其高性能应用中这一需求就很常见。
到目前为止,我们还不得不依赖特别的机制。例如,我们可以使用命令行宏来控制运行时检验:
标准库提供了调试宏assert(),以主张在运行时某个条件必须成立。例如:
在“调试”模式下,如果assert()的条件失败,程序会终止。如果不在调试模式下,assert()则不会被检查。这相当粗糙,也很不灵活,但通常已经足够了。
Read now
Unlock full access