gpt4 book ai didi

c++ - 优化、断言和 Release模式

转载 作者:可可西里 更新时间:2023-11-01 18:35:45 25 4
gpt4 key购买 nike

考虑一个函数

void f() {
assert(condition);

...
}

在启用断言的 Debug模式下,编译器可以自由假设条件成立,因为如果不成立,则不会执行剩余的代码。

但是,在 Release模式下,我相信编译器只会看到

void f() {
...
}

并且不能再承担条件

是否有任何编译器指令或静态断言技巧让编译器知道某些不变量?

最佳答案

这不能用可移植的 C 或 C++ 完成。

一些编译器提供内部函数,例如 __assume (对于 MSVC)和 __builtin_unreachable(对于 GCC、ICC 和 Clang),可用于此目的。

例如:

void f() {
__assume(condition); //For MSVC
/*...*/
}

void f() {
if (!condition) __builtin_unreachable(); //for GCC and Clang
/*...*/
}

关于c++ - 优化、断言和 Release模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709259/

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