有什么办法可以告诉编译器,你知道某个特定变量的值必须在代码中某个特定位置的特定范围内,才能帮助编译器进行优化?我正在编写一个库,它可以在编译时知道一些变量的范围,如果能够以某种方式将此信息传递给编译器以便编译器可以使用它来进行优化,那么它会很好用。我想增加对任何编译器的支持,即使这些编译器无法为所有编译器工作(这听起来像某些编译器可以作为扩展的东西,但我没有发现任何)。我知道我可以写这样的东西:如何将范围信息传递给C++编译器?
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
但这是一个运行时检查。也许有一些技巧让编译器做出范围的假设,而没有这样的检查?
你有什么想法可以帮助哪种类型的优化? –
如果使用模板,实际上可以编译时检查编译时是否知道所有的信息。 –
您正在使用“编译器”这个短语,但您永远不会告诉我们哪一个。推测你的意思是某种版本的g ++或Visual C++,但这并不清楚。标准并没有解决一般的优化问题,所以你可能在这里做的任何事情都是特定于实现的。 –