宏定义改变函数名称,参数如何传递?

#define宏定义改变函数名称,在应用的适合如何传参数进入?
我想用一个统一的宏代替单个函数,但是代替失败,请问有没有说明好点的办法

#define P_COMInit(n)   do{P_COM##n##_OUTMODE();}while(1)
#define P_SEGInit(n)  do{P_SEG##n##_OUTMODE();}while(1)

#define MAX_COM_NUM  2
#define MAX_SEG_NUM    7


void DispInit(void)
{
  /*  
  P_COM1_OUTMODE();
  P_COM2_OUTMODE();
  P_SEG1_OUTMODE();
  P_SEG2_OUTMODE();
  P_SEG3_OUTMODE(); 
  P_SEG4_OUTMODE();
  P_SEG5_OUTMODE(); 
  P_SEG6_OUTMODE();
  P_SEG7_OUTMODE();*/
  uchar i;
  for(i = 1;i <= MAX_COM_NUM;i++)
  {
    P_SEGInit(i);
  }
  for(i = 1;i <= MAX_SEG_NUM;i++)
  {
    P_COMInit(i);
  }
}

你需要多线程啊,同一个线程里全跑死循环,直接卡在第一个函数里,后面不执行呀
再说这种不应该在定义函数的时候直接传入参数吗,为什么搞什么宏定义,这才省几句代码呀

我遇到的问题是:
i=1时,P_COMInit(i)展开后是
do { P_SEGi_OUTMODE();}while(0),
而不是
do{P_SEG1_OUTMODE();}while(0)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^