本来打算写内联函数,考虑到宏函数是文本展开。要比内联函数更为确定一些,所以就这么干了。宏函数不能调试,确实是这回事。但不知道有没有什么办法使得宏函数也能够被调试?debug编译下。

解决方案 »

  1.   

     内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是
    通过编译器控制来实现的。 而且内联函数是真正的函数,只是在需要用到的时
    候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开
    销。 你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一
    些问题。   个人觉得用内联函数比宏要好。如果你函数内容很长,用宏来定义也不妥吧,一般都是很短小的函数,不太需要调试的
      

  2.   


    那你是否知道,内联函数是否会展开的最终依据是由编译器,以及一些规则决定的?
    我现在在问如何让宏函数能够被单步调试起来。
      

  3.   


    恩,我写的是内联函数是通过编译器控制来实现的。我所了解的是宏函数是无法单步调试的。所以建议你使用内联函数,效率不会比宏函数低多少,并且不容易犯错。
      

  4.   

    用内联吧,宏不同于函数,是没有办法不能进入宏定义进行调试。还是把宏里代码先拿出来单独进行调试~
      

  5.   


    以前不记得,我好想见过一些牛人有办法让宏函数可以被调试起来。有可能是编译器发挥的作用吧
      

  6.   


    我用宏函数最好的情况是,100%能够展开的。
    用内联,即便是强制内联也是没有办法达到100%展开的。我要达到的效果就是代码速度快,毕竟我也不是什么高手,写不出什么高级效率代码。