我有以下形式的功能:
void onPulse10(){
pulseList.push_back(10);
}
void setupMeterInput10(){
pinMode(10, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(10), onPulse10, RISING);
}
我用它们在引脚上附加中断。我的问题是我有大约 10 个引脚需要注意使用中断。所有人都做同样的事情,唯一的区别是数量:而不是 10,它将是 10-20。我怎样才能定义一个宏,如 SetupPin10()
,它将扩展到上面的内容,这样我就可以有 10 行设置行,而不是复制粘贴 10 次相同的 2 个函数?
最佳答案
您可以使用 token pasting (##
) 来完成这个。
#define SetupPin(n) void onPulse##n() { pulseList.push_back( n ); }
然后简单地使用
SetupPin(10)
将扩展到
void onPulse10() { pulseList.push_back( 10 ); }
关于c - 定义用于定义函数的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154727/