【发布时间】:2010-11-07 03:45:13
【问题描述】:
是否可以在编译时计算 pow(10,x)?
我有一个不支持浮点和慢整数除法的处理器。我试图在编译时执行尽可能多的计算。如果我将x 和C/pow(10,x) 作为参数传递(x 和C 始终是常量整数,但对于每个调用它们是不同的常量),我可以显着加快一个特定函数的速度。我想知道是否可以通过引入自动执行1/pow(10,x) 的宏而不是强迫程序员计算它来使这些函数调用更不容易出错?
有预处理器技巧吗?我可以强制编译器优化库调用吗?
【问题讨论】:
-
我相信我已经看到了 C 预处理器已经完成的证据(我认为它是在预处理器中的混淆 C 竞赛中实现的磁带机。)所以有一种方法。不过不知道那是什么。
-
预处理器#defines 不能递归,因为它们只是文本替换。所以像格雷格一样,这里是一个不要花时间寻找的地方。 :)
-
@Greg D:但是,从图灵机开始并实现 10 的指数函数让我觉得雄心勃勃。