定义用于定义函数的宏

Ham*_*aya 1 c macros arduino c-preprocessor

我有以下形式的功能:

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

void setupMeterInput10(){
  pinMode(10, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(10), onPulse10, RISING);
}
Run Code Online (Sandbox Code Playgroud)

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

Mr.*_*ama 5

您可以使用令牌粘贴(##)来完成此操作.

#define SetupPin(n) void onPulse##n() { pulseList.push_back( n ); }
Run Code Online (Sandbox Code Playgroud)

然后简单地使用

SetupPin(10)
Run Code Online (Sandbox Code Playgroud)

哪个将扩展到

void onPulse10() { pulseList.push_back( 10 ); }
Run Code Online (Sandbox Code Playgroud)