有没有什么方法可以告诉编译器你知道某个特定变量的值在代码的某个点必须在特定范围内,以帮助编译器进行优化?我正在编写一个库,可以在编译时知道某些变量的范围,如果它能以某种方式将此信息传达给编译器,以便编译器可以使用它进行优化,那将是非常好的。我想添加对任何编译器的支持,即使它不能为所有编译器工作(这听起来像是某些编译器可以作为扩展的东西,但我还没有找到任何)。我知道我可以写这样的东西:
if(x < COMPILE_TIME_MIN or x > COMPILE_TIME_MAX)
return;
// compiler will assume for code below that x is in range COMPILE_TIME_MIN..COMPILE_TIME_MAX
但这是运行时检查。也许有一些技巧可以让编译器在没有这样的检查的情况下对范围做出假设?
最佳答案
任何此类“提示”都是特定于编译器的。
例如,Visual C++ 允许您使用 the __assume
intrinsic 提供此类提示.
(其他编译器也可能提供此类内部函数,但我对其他编译器不够熟悉,无法提供任何进一步的信息。如果您有兴趣,请查阅编译器的文档。)
关于c++ - 如何将范围信息传递给 C++ 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482122/