单片机编程中常用的宏定义的问题(关于##)
现在我想实现以下功能,请大家集思广益帮忙解决:现在有若干个外设功能需要配置,首先要为每个功能分配引脚。比如有功能:FC,SC……
分别分配引脚1,2……
本着“大道从简”的思路,想要一个简单的定义方式和调用方式。
我的思路是这样子,首先定义一个#define FC_pin 1 及#define SC_pin 2……
然后,如果FC_pin定义了,那么会自动定义FC功能的寄存器,例如Reg1.GPIO1=x,Reg2.GPIO1=y
比如:
#define FC_pin 1//FC_pin的值可能会变,不一定是1
#ifdef FC_pin
Reg1.GPIO##FC_pin = x;
Reg2.GPIO##FC_pin = y;
#endif
问题一:##只能在宏定义中使用,怎样能够比较简单的调用和实现
问题二:##连接的是两个字符串,而我想吧FC_pin代表的无符号整形数和GPIO连在一起,也就是Reg.GPIO1或Reg.GPIO23这种形式。
问题三:除此而外,就是如果#define FC_pin 1而且#define SC_pin 1两个用了相同的引脚,如何能够提示错误。
希望高手帮忙解答,十分感谢。