我目前正在为微控制器编写代码;由于ATMega128没有硬件乘法器或分频器,因此这些操作必须用软件完成,并且占用相当数量的周期。但是,为了代码的可移植性和易用性,我不希望将预先计算的值硬编码到我的代码中。因此,例如,我有许多依赖于系统时钟频率的任务。目前我运行在16MHz,但是我应该选择降低它,比如说为了降低电池应用的功耗,我想改变一行代码而不是很多。那么,C预处理器可以计算算术表达式,然后将结果“粘贴”到我的代码中,而不是将原始表达式“粘贴”到代码中?如果是这样,我将如何去做这件事?他们的编译器选项和我需要考虑的是什么?C预处理器可以执行算术运算吗?如果是这样,怎么样?
注:我想要计算的值是常数值,所以我没有理由认为这不是一个功能。
如果表达式是常量,它们是不是被编译器优化掉了呢? –
http://stackoverflow.com/a/1560385/995714 –
的副本嗯,有预处理器库,可能有一个给你,它主要取决于你定位的C语言版本,例如C99和上面有P99 http://p99.gforge.inria.fr/ – user2485710