【发布时间】:2015-03-11 08:55:35
【问题描述】:
我正在编写 C 代码,它要求我使用多个具有相同定义的函数调用,这些函数调用仅在单个字符上有所不同。有没有办法我可以制作一个宏函数,它需要一个数字,并可以将这些调用插入到我的代码中,在我调用宏的地方,因为我知道编译时的数字:
即
#define call_pin_macro(X)
enable_pin#X();
do_thing_pin#X();
do_other_thing_pin#X();
.
.
void pin_function(void){
call_pin_macro(1);
call_pin_macro(2);
call_pin_macro(3);
}
代替:
void pin_function(void){
enable_pin1();
do_thing_pin1();
do_other_thing_pin1();
enable_pin2();
do_thing_pin2();
do_other_thing_pin2();
enable_pin3();
do_thing_pin3();
do_other_thing_pin3();
}
作为注释,我已经查看了 gcc 中的字符串化(因此包含 #X),但是我无法编译上面的代码,我得到一个错误“错误:'#' 后面没有宏参数”。因此,这似乎不是我所追求的功能。提前致谢。
【问题讨论】:
-
注意:写在多行上的宏需要'\'来连接行。所以#define call_pin_macro(X)\enable_pin#X();\...
标签: c embedded c-preprocessor compile-time