Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 定义用于定义函数的宏_C_Arduino_Macros_C Preprocessor - Fatal编程技术网

C 定义用于定义函数的宏

C 定义用于定义函数的宏,c,arduino,macros,c-preprocessor,C,Arduino,Macros,C Preprocessor,我的职能如下: void onPulse10(){ 脉冲发生器。推回(10); } 无效设置MeterInput10(){ pinMode(10,输入\上拉); 连接中断(数字插针中断(10),接通脉冲10,上升); } 我用它们在引脚上连接中断。我的问题是,我有大约十个引脚,我想看使用中断。所有人都做同样的事情,唯一的区别是数字:不是10,而是10-20。我如何定义一个宏,如SetupPin10(),它将扩展到上面,这样我就可以有10个设置行,而不是相同的2个函数复制粘贴10次?您可以使用(

我的职能如下:

void onPulse10(){
脉冲发生器。推回(10);
}
无效设置MeterInput10(){
pinMode(10,输入\上拉);
连接中断(数字插针中断(10),接通脉冲10,上升);
}
我用它们在引脚上连接中断。我的问题是,我有大约十个引脚,我想看使用中断。所有人都做同样的事情,唯一的区别是数字:不是10,而是10-20。我如何定义一个宏,如
SetupPin10()
,它将扩展到上面,这样我就可以有10个设置行,而不是相同的2个函数复制粘贴10次?

您可以使用(
#
)来完成这项工作

#define SetupPin(n) void onPulse##n() { pulseList.push_back( n ); }
然后简单地使用

SetupPin(10)
这将扩展到

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

模板呢?请避免使用宏。您是否可以将值
10
作为参数传递,并仅使用2个函数?不幸的是,我无法使用模板进行此操作,这是针对嵌入式平台的,回调无法接收参数,因此我需要为每个回调定义一个函数。是否可以使用相同的宏扩展这两个函数?是否在第一个函数之后使用第二个函数?@HamzaYerlikaya-是的,宏可以扩展为任何函数-包括两个函数。