c++ - 如何将范围信息传递给 C++ 编译器?

标签 c++ optimization range compile-time

有没有什么方法可以告诉编译器你知道某个特定变量的值在代码的某个点必须在特定范围内,以帮助编译器进行优化?我正在编写一个库,可以在编译时知道某些变量的范围,如果它能以某种方式将此信息传达给编译器,以便编译器可以使用它进行优化,那将是非常好的。我想添加对任何编译器的支持,即使它不能为所有编译器工作(这听起来像是某些编译器可以作为扩展的东西,但我还没有找到任何)。我知道我可以写这样的东西:

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/

相关文章:

python - 索引错误: string index out of range:

c++ - 保护这份关于将 C/C++ 与 GSSAPI 和 SASL 结合使用的宝贵文档

指向非静态方法的指针的 C++ 有用性

pdf - 最小的有效 PDF 是多少?

email - 用于通过电子邮件发送事件电子表格的 Google Apps 脚本

javascript - 根据文本框中的值范围重定向到 iframe 中的 URL

c++ - WSARecv,Completionport Model,如何管理Buffer并避免溢出?

c++ - 将 lambda 包装为 std::function 会产生错误的结果(是模板参数推导的危险)

c++ - 尾调用优化似乎会稍微降低性能

mysql - 网页数据库查询优化