#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)
char str[5] = {'a','b','c','d','f'};// 类比于整数数组
for(i=0;i<sizeof(str)/sizeof(str[0]);i++){
printf("%c ",str[i]);
}
类比于整数数组