我有以下形式的功能:
void onPulse10(){
pulseList.push_back(10);
}
void setupMeterInput10(){
pinMode(10, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(10), onPulse10, RISING);
}
我使用它们在引脚上附加中断。我的问题是我有大约十个引脚,我想看看使用中断。所有人做同样的事情,唯一的区别是数字:而不是10,它将是10-20。如何定义一个将扩展到上面的SetupPin10()
等宏,这样我可以有10个设置行而不是相同的2个函数复制粘贴10次?
答案 0 :(得分:5)
您可以使用token pasting(##
)来完成此任务。
#define SetupPin(n) void onPulse##n() { pulseList.push_back( n ); }
然后只需使用
SetupPin(10)
将扩展为
void onPulse10() { pulseList.push_back( 10 ); }