定义用于定义函数的宏

时间:2015-10-15 17:20:19

标签: c arduino macros c-preprocessor

我有以下形式的功能:

void onPulse10(){
  pulseList.push_back(10);
}

void setupMeterInput10(){
  pinMode(10, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(10), onPulse10, RISING);
}

我使用它们在引脚上附加中断。我的问题是我有大约十个引脚,我想看看使用中断。所有人做同样的事情,唯一的区别是数字:而不是10,它将是10-20。如何定义一个将扩展到上面的SetupPin10()等宏,这样我可以有10个设置行而不是相同的2个函数复制粘贴10次?

1 个答案:

答案 0 :(得分:5)

您可以使用token pasting##)来完成此任务。

#define SetupPin(n) void onPulse##n() { pulseList.push_back( n ); }

然后只需使用

SetupPin(10)

将扩展为

void onPulse10() { pulseList.push_back( 10 ); }