trybye
2015-11-02 06:11
采纳率: 23%
浏览 2.5k
已采纳

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

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • huangbinbinzhou 2015-11-03 04:03
    已采纳

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

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

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • math715 2015-11-02 06:41

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

    评论
    解决 无用
    打赏 举报
  • huangbinbinzhou 2015-11-02 06:45

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

    //#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);
    }

    评论
    解决 无用
    打赏 举报
  • huangbinbinzhou 2015-11-02 06:49

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

    #define hbb2 hbb1

    void test_fun()
    {
    hbb2(1);
    }

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题