【C++】宏(#define)和内联函数(inline)的理解以及区别

宏(#define)和内联函数(inline)的理解以及区别:

       缺点:

              1.宏没有类型检测,不安全

              2.宏是在预处理时进行简单文本替换,并不是简单的参数传递(很难处理一些特定情况。例如:Add(z++))

              3.使代码变长

              4.宏不能进行调试

              5.当预处理搜索#define定义的符号时,字符串常量并不被搜索

      优点:

             1.加快了代码的运行效率

             2.让代码变得更加的通用

  • 内联函数

特点:

        (1.)类中的成员函数是默认的内联函数

            (2.)内联函数内不准许有循环语句和开关语句

            (3.)内联函数的定义必须出现在第一次调用内联函数之前

缺点:

             代码变长,占用更多内存

优点:

          1.有类型检测,更加的安全

          2.内联函数是在程序运行时展开,而且是进行的是参数传递

          3.编译器可以检测定义的内联函数是否满足要求,如果不满足就会当作普通函数调用(内联函数不能递归,内联函数不能太大)

  • 对比

相同点:

                  两者都是可以加快程序运行效率,使代码变得更加通用

不同点:

               1.内联函数的调用是传参,宏定义只是简单的文本替换

               2.内联函数可以在程序运行时调用,宏定义是在程序编译进行

               3.内联函数有类型检测更加的安全,宏定义没有类型检测

               4.内联函数在运行时可调式,宏定义不可以

               5.内联函数可以访问类的成员变量,宏不可以

               6.类中的成员函数是默认的内联函数

猜你喜欢

转载自blog.csdn.net/alidada_blog/article/details/83049780