gpt4 book ai didi

D语言断言(假)

转载 作者:行者123 更新时间:2023-12-03 03:43:05 28 4
gpt4 key购买 nike

TDPL 描述了 assert(false); 语句的行为。此类断言不会从发布版本中删除(与所有其他断言一样),并且实际上会立即停止程序。问题是为什么?为什么会有如此令人困惑的行为?他们可能会添加 halt(); 或类似的东西来停止程序。

有时,我在 C++ 代码中使用以下构造:

if (something_goes_wrong)
{
assert(false);
return false;
}

显然,这样的构造在 D 中是不可能的。

更新

说清楚一点。问题是为什么int x=0; assert(x); 不会使程序的发布版本崩溃,但 assert(0); 会吗?为什么做出如此奇怪的语言设计决定?

最佳答案

它比 D 更早,它通常用于告诉编译器您不希望在代码中到达该点,因为这意味着代码中存在严重错误

典型用法是这样的

MyStruct foo(){
foreach(s;set){
if(someConditionGuaranteedToHoldForAtLeastOne(s))
return s;
}
//now what I can't return null;
assert(0);//tell the compiler I don't expect to ever come here
}

关于D语言断言(假),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968277/

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