精华内容
下载资源
问答
  •  内联函数和普通函数相比可以加快程序运行速度,因为在调用内联函数时,不需要中断,在编译时候直接将内联函数镶嵌到目标代码中。内联是以增加空间消耗为代价,换取时间开销。宏只是一种简单代码替换。  ...

    转载

    2007年12月25日 14:32:00 xiaoyan_cug 阅读数:796

     内联函数和普通函数相比可以加快程序的运行的速度,因为在调用内联函数时,不需要中断,在编译的时候直接将内联函数镶嵌到目标代码中。内联是以增加空间消耗为代价,换取时间开销。宏只是一种简单代码的替换。

          内联函数要进行参数检查,而宏没有参数检查。这是内联函数比宏的优势。

          下列情况使用内联:(1)该函数不断被重复调用;(2)该函数仅仅几行,且不含有for,while,switch语句。一般来说,我们平时写一个小程序时,没有必要内联。

           内联函数比宏安全,宏要考虑边际效应。

     &nbs...  

    展开全文
  • 内联函数和宏定义的区别 用内联函数取代宏: 1.内联函数在运行时可调试,而宏定义不可以;...内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接...

    内联函数和宏定义的区别

    用内联函数取代宏:

    1.内联函数在运行时可调试,而宏定义不可以;
    2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定
    义则不会;
    3.内联函数可以访问类的成员变量,宏定义则不能;
    4.在类中声明同时定义的成员函数,自动转化为内联函数。

    内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。

    内联函数要做参数类型检查,这是内联函数跟宏相比的优势。

    inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline 更安全可靠。可是这个是以增加空间消耗为代价的。至于是否需要inline函数就需要根据你的实际情况取舍了。

    宏函数的优点:
    1. 提高了程序的可读性,同时也方便进行修改;
    2. 提高程序的运行效率:使用带参的宏定义既可完成函数调用的功能,又能避免函数的出栈与入栈操作,减少系统开销,提高运行效率;
    3.宏是由预处理器处理的,通过字符串操作可以完成很多编译器无法实现的功能。比如##连接符。
    但是它也有自己的缺点:
    1. 由于是直接嵌入的,所以代码可能相对多一点;
    2. 嵌套定义过多可能会影响程序的可读性,而且很容易出错;
    3. 对带参的宏而言,由于是直接替换,并不会检查参数是否合法,存在安全隐患。
    补充:预编译语句仅仅是简单的值代替,缺乏类型的检测机制。这样预处理语句就不能享受C++严格的类型检查的好处,从而可能成为引发一系列错误的隐患。
    的确,宏定义给我们带来很多方便之处,但是必须正确使用,否则,可能会出现一些意想不到的问题。
    最后,引用《C陷进与缺陷》的一句话,对其进行总结:
    宏并不是函数,宏并不是语句,宏并不是类型定义

    inline一般只用于如下情况:

    (1)一个函数不断被重复调用。

    (2)函数只有简单的几行,且函数不包含for、while、switch语句。

    一般来说,我们写小程序没有必要定义成inline,但是如果要完成一个工程项目,当一个简单函数被调用多次时,则应该考虑用inline。

    宏在C语言里极其重要,而在C++里用得就少多了。关于宏的第一规则是:绝不应该去使用它,除非你不得不这样做。几乎每个宏都表明了程序设计语言里或者程序里或者程序员的一个缺陷,因为它将在编译器看到程序的正文之前重新摆布这些正文。宏也许是许多程序设计工具的麻烦。所以,如果你使用了宏,你就应该准备着只能从各种工具(如排错系统、交叉引用系统、轮廓程序等)中得到较少的服务。

    宏是在代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。
    宏不是函数,只是在编译前(编译预处理阶段)将程序中有关字符串替换成宏体
    inline函数是函数,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。

    inline fact(float i) { return i * i; } // 没有写返回值的
    printf("bb= %d", fact(8)); // 调用时就是执行printf("bb= %d", 8*8);

    关于类的例子:

    Class A
    {
    publicint readTest()
        {
            return nTest;
        }
        void setTest(int i);
    };
    inline void A::setTest(int i)
    {
        nTest=i;
    };

    类A的成员函数readTest()和setTest()都是内联函数,readTest()函数的定义体被放在类声明之中,因而readTest()自动转换成inline函数,setTest函数的定义体在类声明之外,因此要加上inline关键字。

    展开全文
  • 用内联函数取代宏: 1.内联函数在运行时可调试,而宏定义不可以;...内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译时候内联函数可以直接被镶嵌到目标代码中。 内联函数...

    用内联函数取代宏:

    1.内联函数在运行时可调试,而宏定义不可以;
    2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定
    义则不会; 
    3.内联函数可以访问类的成员变量,宏定义则不能; 
    4.在类中声明同时定义的成员函数,自动转化为内联函数。

    内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。

    内联函数要做参数类型检查,这是内联函数跟宏相比的优势。

    inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline 更安全可靠。可是这个是以增加空间消耗为代价的。至于是否需要inline函数就需要根据你的实际情况取舍了。

    inline一般只用于如下情况:

    (1)一个函数不断被重复调用。
    
    (2)函数只有简单的几行,且函数不包含for、while、switch语句。

    一般来说,我们写小程序没有必要定义成inline,但是如果要完成一个工程项目,当一个简单函数被调用多次时,则应该考虑用inline。

    宏在C语言里极其重要,而在C++里用得就少多了。关于宏的第一规则是:绝不应该去使用它,除非你不得不这样做。几乎每个宏都表明了程序设计语言里或者程序里或者程序员的一个缺陷,因为它将在编译器看到程序的正文之前重新摆布这些正文。宏也许是许多程序设计工具的麻烦。所以,如果你使用了宏,你就应该准备着只能从各种工具(如排错系统、交叉引用系统、轮廓程序等)中得到较少的服务。

    宏是在代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。

    宏不是函数,只是在编译前(编译预处理阶段)将程序中有关字符串替换成宏体

    inline函数是函数,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。

    inline fact(float i) { return i * i; } // 没有写返回值的
    printf("bb= %d", fact(8)); // 调用时就是执行printf("bb= %d", 8*8);

    关于类的例子如下:

    Class A
    {
    public:
        int readTest()
        {
            return nTest;
        }
        void setTest(int i);
    };
    inline void A::setTest(int i)
    {
        nTest=i;
    };

    类A的成员函数readTest()和setTest()都是内联函数,readTest()函数的定义体被放在类声明之中,因而readTest()自动转换成inline函数,setTest函数的定义体在类声明之外,因此要加上inline关键字。

    展开全文
  • 用内联函数取代宏: 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的...内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。

    用内联函数取代宏:

    1.内联函数在运行时可调试,而宏定义不可以;
    2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定
    义则不会; 
    3.内联函数可以访问类的成员变量,宏定义则不能; 
    4.在类中声明同时定义的成员函数,自动转化为内联函数。
    • 1
    • 2
    • 3
    • 4
    • 5

    内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。

    内联函数要做参数类型检查,这是内联函数跟宏相比的优势。

    inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline 更安全可靠。可是这个是以增加空间消耗为代价的。至于是否需要inline函数就需要根据你的实际情况取舍了。

    inline一般只用于如下情况:

    1)一个函数不断被重复调用。
    
    (2)函数只有简单的几行,且函数不包含forwhileswitch语句。
    • 1
    • 2
    • 3

    一般来说,我们写小程序没有必要定义成inline,但是如果要完成一个工程项目,当一个简单函数被调用多次时,则应该考虑用inline。

    宏在C语言里极其重要,而在C++里用得就少多了。关于宏的第一规则是:绝不应该去使用它,除非你不得不这样做。几乎每个宏都表明了程序设计语言里或者程序里或者程序员的一个缺陷,因为它将在编译器看到程序的正文之前重新摆布这些正文。宏也许是许多程序设计工具的麻烦。所以,如果你使用了宏,你就应该准备着只能从各种工具(如排错系统、交叉引用系统、轮廓程序等)中得到较少的服务。

    宏是在代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。

    宏不是函数,只是在编译前(编译预处理阶段)将程序中有关字符串替换成宏体

    inline函数是函数,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。

    inline fact(float i) { return i * i; } // 没有写返回值的
    printf("bb= %d", fact(8)); // 调用时就是执行printf("bb= %d", 8*8);
    • 1
    • 2

    关于类的例子如下:

    Class A
    {
    publicint readTest()
        {
            return nTest;
        }
        void setTest(int i);
    };
    inline void A::setTest(int i)
    {
        nTest=i;
    };
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    类A的成员函数readTest()和setTest()都是内联函数,readTest()函数的定义体被放在类声明之中,因而readTest()自动转换成inline函数,setTest函数的定义体在类声明之外,因此要加上inline关键字。

    展开全文
  • inline函数和宏定义区别 整理

    千次阅读 2017-09-15 13:42:48
     内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译时候内联函数可以直接呗镶嵌到目标代码中。内联函数要做参数类型检查,这是内联函数跟宏相比优势。  inline是指嵌入代码,就是在...
  • ES6中引入的一种新的函数类型,叫做generator生成器函数,它的特点是能够通过yield表达式中断函数的执行。 在普通的函数通过return指定...普通函数和生成器函数的区别普通函数和生成器函数的构造函数分别是Func...
  • 优势:1、内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译时候内联函数可以直接被内嵌到目标代码中。而宏只是一个简单替换。2、内联函数要做参数类型检查,这是内联函数跟宏相比...
  • 内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单替换。 内联函数要做参数类型检查,这是内联函数跟宏相比优势。 ...
  • 答案:内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编 译时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单替换。 内联函数要做参数类型检查,这是内联函数跟宏相比优势...
  • 内联函数和普通函数相比可以加快程序运行效率,因为它不需要中断调用,在编译时候内联函数可以直接被镶嵌到目标代码中。而宏只是在预处理阶段一个简单字符替换。 内联函数需要做类型检查,这是相比宏一个...
  • 内联函数和宏定义

    2016-06-10 16:46:24
    内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译时候内联函数直接被镶嵌在目标代码中,而宏只是一个简单替换。 内联函数需要做参数类型检查,这是内联函数跟宏比优势 inline是...
  • 内联函数和static...内联函数和普通函数相比可以加快程序的速度,因为不需要中断调用,在编译的时候内联函数可以直接镶嵌在目标代码中。而宏只是一个简单的替换。 内联函数要做参数类型检查,这是内联函数和宏...
  • c++ 内联函数、宏定义

    2020-05-11 15:54:24
    参考: 1、面试—内联函数和宏定义的区别 内联函数:inline 声明:在声明函数时头部加inline...3、内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码
  • 中断的调用流程中讲到Linux中对中断的处理最终会调用到在驱动程序中...中断处理函数同普通的函数并无太大的区别,但由于它是运行在中断上下文(interrupt context)中的,所以他不能休眠引起阻塞。 中断处理函数的
  • 答案c51中断函数和普通的C语言函数区别在哪里
  • S32K144(6)外部中断

    2021-02-04 21:02:17
    目录 1、简介 2、代码编程 2.1、bsp_key.h 2.2、bsp_key.c 2.3、main.c ...博客只是用于记录自己使用过的...其实与普通IO口区别不大,只是多了打开中断,编写中断服务函数的功能 2.1、bsp_key.h #ifndef BSP_KEY_
  • (a)内联函数和普通函数相比可以加快程序的运行速度,因为不需要中断调用,在编译的时候内联函数可以直接 被嵌入到目标代码中。而宏只是一个简单的替换。inline是指嵌入代码,就是在调用函数的地方不是跳转,而是 把...
  • python中生成器

    2018-10-06 22:40:14
    和普通函数看起来差不多,区别是,生成器函数使用yield返回值,而不是用return 自动实现了迭代器协议,即实现了__next__方法(python3) 生成器函数返回一个生成器对象 yield返回值之后函数没有结束,而是...
  • 6、子函数的编写(分带形参不带形参)。 7、编写流水灯函数。 8、蜂鸣器,继电器的工作原理并编写程序。 第四讲:数码管工作原理 1、 共阴共阳数码管内部结构,显示原理。 2、 用数字万用表标定数码管的段选位选...
  • 第一节 S5PV210的看门狗定时器S5PV210上的看门狗定时器相当于一个普通的16bit的定时器,它与PWM定时器的区别是看门狗定时器可以产生reset信号而PWM定时器不能,S5PV210看门狗定时器的结构图如下:   第二节 程序...
  • 前端面试之ES6篇

    2020-04-04 21:35:12
    目录es6新特性箭头函数与普通函数的区别Map、Set、weakMap、weakSet与垃圾回收机制关于异步:什么是Promise手写promise实现思路如何中断一个promiseasync、awaitES7ES8的新特性 es6新特性 let、const 块作用域 ...
  • 6、子函数的编写(分带形参不带形参)。 7、编写流水灯函数。 8、蜂鸣器,继电器的工作原理并编写程序。 第四讲:数码管工作原理 1、 共阴共阳数码管内部结构,显示原理。 2、 用数字万用表标定数码管的段选位选...
  • Cortex M3使用PendSV异常

    千次阅读 2017-02-04 19:14:57
    我个人理解PendSV就是一个软中断... 要讲清楚这两者之间的区别就必须了解Cortex M3的运行模式, Cortex M3有两种操作模式:Handler模式(可以简单的认为就是中断服务函数中的代码)Thread模式(普通的代码), 两种特权级别:
  • 1. Linux体系结构  Linux系统的地址空间分为用户空间和内核空间,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。 2. 系统调用接口 ...②系统调用和普通函数的区别:系统调用...
  • 1. Linux体系结构  Linux系统的地址空间分为用户空间和内核空间,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。 2. 系统调用接口 ...②系统调用和普通函数的区别:系统调用...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

中断函数和普通函数的区别