gpt4 book ai didi

c++ - `assert` 在循环中

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

for(unsigned int i = 0; i < x.size(); i++)
assert(x[i] > 0);

当不调试时(NDEBUG 标志),结果是一个空的 for 循环。有没有一种干净的方法来处理这个问题(不执行空的 for 循环);最好没有预处理器指令,因为它首先会破坏 assert 的目的。

最佳答案

inline bool all_positive(std::vector<int> const &x)
{
for (size_t i = 0; i < x.size(); i++)
if (x[i] <= 0)
return false;
return true;
}

然后

assert(all_positive(x));

(尽管当定义了 NDEBUG 时,这可能会给您一个“未使用的函数”警告)。

关于c++ - `assert` 在循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608722/

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