c中的宏定义可以是2个函数吗,我把别人的函数移到自己文件中,但是有些同样功能的函数名字不一样

c中的宏定义可以是2个函数吗,我把别人的函数移到自己文件中,但是有些同样功能的函数名字不一样

问题描述:

图片说明还要后面的括号以及内部的形参吗?

你的提问: delay_us()是我从别的文件中copy过来的,只有函数名,并没有这个函数的定义,如果我用#define f1() f2()的形式,应该是替换了整个函数吧,程序中没有定义能行吗?我的意思就是吧f1替换成f2,那么#define f1 f2,这样对f1(),f2()函数会起作用吗.

我的理解: 代码中 没有f1 函数的实现 ,但是有 函数 f2 的实现. 接着 你用 #define f1 f2 这样的宏 ,对 f1 这个函数进行替换.
我的回答: 这样是可以的.

你的另一个提问:用#define f1() f2()的形式,应该是替换了整个函数吧,程序中没有定义能行吗?
我的回答: 是可以的. 但是 在某些情况 会报 编译错误.(这个 我有点说 不清楚了)
总结: 希望 我说的文字. 是你想要的

最好不用
函数 delay_us ( u32 ) 会展开 DelayUs( us2 ),会与原来DelayUs函数的产生冲突
如果只有DelayUs 函数是可以的

图中的 红色部分的代码 ,没有问题
但是可能会报错:

//#define hbb2(x) hbb1(x) //如果放这里 就会报错误
void hbb1(int n)
{
LOG(INFO)<<"hbb ";
}
void hbb2(int n)
{
LOG(INFO)<<"hbb ";
}
#define hbb2(x) hbb1(x)

void test_fun()
{
hbb2(1);
}

//我的方案
void hbb1(int n)
{
LOG(INFO)<<"hbb ";
}

#define hbb2 hbb1

void test_fun()
{
hbb2(1);
}

总结: 但 hbb1 和 hbb2 2个函数 的功能一致时 , 那么 你就保留一个 函数. 同时用 宏 将所有使用 hbb2 的地方 转成hbb1
代码如下:
//我的方案
void hbb1(int n)
{
LOG(INFO)<<"hbb ";
}

#define hbb2 hbb1

void test_fun()
{
hbb2(1);
}