我正在编写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' s)但是我无法获得上面的代码来编译,我收到错误"错误:'#& #39;后面没有宏参数"。因此,它似乎并不完全是我追求的功能。提前致谢。
答案 0 :(得分:2)
在gcc中你可以这样做:
#define call_pin_macro(X) \
enable_pin##X(); \
do_thing_pin##X(); \
do_other_thing_pin##X();
双重哈希是macro concatenation运算符。你不想使用stringify,因为它会在它周围加上引号。
反斜杠允许您通过多行继续宏。