【发布时间】:2014-04-26 04:12:31
【问题描述】:
我目前正在为微控制器编写代码;由于 ATMega128 没有硬件乘法器或除法器,因此这些操作必须在软件中完成,并且它们会占用相当多的周期。但是,为了代码的可移植性和易用性,我不希望将预先计算的值硬编码到我的代码中。例如,我有许多任务取决于系统时钟频率。目前我以 16MHz 运行,但我是否应该选择降低它,比如降低电池应用的功耗,我想更改一行代码而不是多行。
话虽如此,C 预处理器能否计算算术表达式,然后将结果“粘贴”到我的代码中,而不是将原始表达式“粘贴”到代码中?如果是这样,我将如何去做?我需要考虑他们的编译器选项吗?
注意:我要计算的值是常数值,所以我看不出这不是一个特性的原因。
【问题讨论】:
-
如果表达式是常量,编译器不会优化掉它们吗?
-
好吧,有预处理器库,也许有一个适合你,这主要取决于你的目标 C 语言版本,例如 C99 及以上有 P99 p99.gforge.inria.fr跨度>
-
目前我使用的是C89,但我可以切换到C99。不确定如何使用这些,因为我正在使用 IAR Embedded Workbench
-
以前从未听说过这个编译器/IDE,我注意到它不是通常的
gcc端口,它是一个完全不同的野兽,我认为我从未见过支持这个编译器的库一般的。祝你好运。也许因为这个编译器不是那么流行,你应该尝试从一些 IRC、恶意列表或 IAR 特定的论坛获得帮助。
标签: c compiler-construction compiler-optimization c-preprocessor