c - 定义用于定义函数的宏

标签 c arduino macros c-preprocessor

我有以下形式的功能:

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/

相关文章:

无法在 Arduino 环境中定义 A8

c - 使用二维数组,段错误(核心转储)

python - 使用 Python/C API 将 Python 列表传递给 C 函数

c++ - Arduino IDE 无法检测到 ZumoMotor.H(PIXY PET)

objective-c - 只需在 Swift 中请求一个 url

vba - 错误 450 : Wrong number of arguments or invalid property assignment on vba

macros - Rust 中的过程宏解析异常

c - C 预处理器如何知道扩展什么不扩展?

c - 如何获取双指针指向的二维数组的大小?

c++ - C语言中#define和#if可以嵌套吗?