美文网首页
C++内联函数与C语言函数宏

C++内联函数与C语言函数宏

作者: 不惜留恋_ | 来源:发表于2020-05-12 14:44 被阅读0次

C++内联函数

什么是内联函数?

在函数的声明和定义前加一个 inline 关键字,这个函数就是内联函数。

通常会省略函数原型,即在声明的同时就定义。

内联函数原理是什么?

内联函数在编译期,在内联函数调用的地方执行了代码替换。

内联函数作用?

执行一个普通的函数的开销包括函数调用的开销以及函数执行的开销。

如果函数执行的开销远小于函数调用的开销,那么省略函数调用的开销将会提高程序的运行效率,这就是内联函数存在的意义。因此内联函数一般都是比较简短的调用。

但是,如果调用内联函数的地方比较多,那么编译器会在每个调用的地方生成一个内联函数的副本,这样内存就相应的增加了。

例子

#include <iostream>

// inline关键字定义了内联函数
inline double square(double x)
{
    return x * x;
}

int main()
{
    int  a = 2;
    double a = square(a++);  // 内联函数,编译期执行代码替换,结果为 3 * 3
    return 0;
}

C函数宏

C++的内联函数执行了编译期的代码替换,这个替换动作与C的函数宏有此类似,但不完全一样.

#include <iostream>
#include <stdio.h>

// C定义的函数宏
#define SQUARE(X) X*X

// C++定义的内联函数
inline double square(double x)
{
    return x * x;
}


int main()
{
    double a = 2;
    double b = SQUARE(a++); // C函数宏替换,结果为a++*a++
    printf("b = %f\n", b); // 6.000000

    double c = 2;
    double d = square(c++); // C++内联函数替换,结果为2*2,而不是c++*c++
    std::cout << "d = " << d << std::endl; // 4
    return 0;
}

同样是求一个数的平方,C的函数宏却得到了不一样的结果。

相关文章

  • NS_INLINE 内联函数

    1 内联函数与宏定义 C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。在C程序中,可以用宏代码提...

  • 第九章 内联函数

    简介:C++中预处理器宏存在的问题,在C++中如何用内联函数解决这些问题以及使用内联函数的方针和内联函数的工作机制...

  • C++内联函数与C语言函数宏

    C++内联函数 什么是内联函数? 在函数的声明和定义前加一个 inline 关键字,这个函数就是内联函数。 通常会...

  • 高质量C++编程指南 ----C++函数的高级特性

    8. C++函数的高级特性 对比于C 语言的函数,C++增加了重载(overloaded)、内联(inline)、...

  • 宏定义min

    C++内联函数

  • 关于内联函数

    内联函数 又被称为在线函数或编译时期展开函数,是指在用inline修饰的函数(这里指的是C++或者C语言的函数)。...

  • 1.2.07_C++ 内联函数

    C++ 类 & 对象 C++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代...

  • 白话kotlin:内联函数助你提升运行效率

    什么是内联函数 这个玩意吸取自C++,如下: 内联函数是C++的增强特性之一,用来降低程序的运行时间。当内联函数收...

  • 《C++ Primer Plus》:函数探幽

    本章内容概览 内联函数 引用变量 按引用传递函数参数 默认参数 函数重载 函数模板 内联函数 内联函数是C++为提...

  • C++内联函数inline

    C++内联函数inlineC++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数...

网友评论

      本文标题:C++内联函数与C语言函数宏

      本文链接:https://www.haomeiwen.com/subject/qbebnhtx.html