gpt4 book ai didi

c++ - 有序非重入调用的简单断言?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:33 32 4
gpt4 key购买 nike

我有两个功能:

将按顺序调用的 void prepare() 和 void finish() 如下:

prepare();
<do something>;
finish();
...
prepare();
<do something>;
finish();

我想做一个简单的断言来简单地测试它们实际上是以这种方式被调用的,并且它们没有在应用程序中并发或乱序调用。

此应用程序是单线程应用程序。这是一个简单的开发/测试健全性检查,以确保按顺序调用这些函数,并且无论出于何种原因,它们都不会被同时调用。此外,由于性能至关重要,因此生产代码中应省略这些断言/健全性检查!

像这样的简单 assert() 是否效果最好?

int test = 0;

void prepare() {
assert(++test == 1);

.
.
.
}

void finish() {
assert(--test == 0);

.
.
.
}

最佳答案

你可能想改变

int test = 0;

#ifndef NDEBUG
int test = 0;
#endif

为了满足您的要求“任何与此测试相关的代码都应从生产中省略”。

关于c++ - 有序非重入调用的简单断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864645/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com