定义用于定义函数的宏

Defining a Macro for Defining Functions

我有以下形式的功能:

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

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

我用这些在引脚上附加中断。我的问题是我有大约 10 个引脚需要注意使用中断。所有人都做同样的事情,唯一的区别是数量:而不是 10,它将是 10-20。我怎样才能定义一个宏,如 SetupPin10() 将扩展到上面,这样我就可以有 10 个设置行而不是相同的 2 个函数复制粘贴 10 次?

您可以使用 token pasting (##) 来完成此操作。

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

然后只需使用

SetupPin(10)

这将扩展到

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