【发布时间】:2014-01-10 00:51:51
【问题描述】:
我几乎可以肯定答案是否定的。但我很固执;我真的很想实现这个功能,周期很重要(阅读:嵌入式)。
目标:
对于这个嵌入式应用程序,我有一个需要内联的时钟配置序列。到处都是。我想用宏来做到这一点。
问题
时钟配置的执行顺序随参数“f”(新时钟频率)而变化。
- if (f>10) do A first
- if (f<=10) do A last
- f is a compile time constant.
示例
#define setup_post10(f) doA(f); \
doB(f); \
doC(f)
#define setup_pre10(f) doB(f); \
doC(f); \
doA(f)
问题
如何通过简单的设置 (f) 来封装它?例如。我想:
#define set(f) #if(f>10) \
setup_post10(f) \
#else \
setup_pre10(f) \
#end
但是在宏定义中使用预处理器指令(例如#if)是无效的(据我所知)。
有没有办法做到这一点?对于我的应用程序,每个周期(和闪存字节)都是宝贵的;我很固执;我希望在我的代码中具有这种抽象级别。
谢谢!
-贾斯汀
【问题讨论】:
-
这是 C 还是 C++?你们都标记了。