宏定义和内联函数,都可以减少函数的调用开销,每次调用函数不必压栈和开辟新的空间。使用宏定义和内联函数代码的执行效率高。它们的区别是
(1)宏定义是预编译器加载,而内联函数是由编译器加载;
(2)宏定义容易产生一些错误,
#define MIN(x) (x*x) MIN(1+3)得到的结果不是我们想要的16,而是1+3*1+3=7;解决这个问题的办法是加上括号:
#define MIN(x) ((x)*(x))
加括号可以解决上面这个例子的问题,但有些问题还是不能解决,比如
#define MIN(x) ((x++)*(x++)) MIN(2)=(2++)*(3++)=6 不是我们想要的结果
而调用内联函数,就更调用函数没什么区别,不会出现这些问题。
分享到:
相关推荐
内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员...
一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种...
内联函数与带参数宏定义的另一个区别是,内联函数的参数类型和返回值类型在声明中都有明确的指定;而带参数宏定义的参数没有类型的概念,只有在宏展开以后,才由编译器检查语法,这就存在很多的安全隐患。 使用...
内联函数的优越性:一:inline定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换(像宏定义一样展开),没有了调用的开销,效率很高。二:类的内敛函数是一个真正的函数。三:使用内联函数inline...
内联函数与宏本质上是两个不同的概念如果程序编写者对于既要求快速,又要求可读的情况下,则应该将函数冠以inline
内联函数和宏的区别,这是好多新手容易感觉困扰的地方 ,我也曾经困惑,故分享此资料,希望共同进步
内联函数的定义格式、编程风格、优缺点、使用注意事项,以及与宏的区别
指定内联函数的方法很简单,只需要在定义函数时增加 inline 关键字。 注意:是在函数定义时增加 inline 关键字,而不是在函数声明时。在函数声明时增加 inline 关键虽然没有错误,但是也没有任何效果 inline 关键字...
内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如 代码如下:#define TABLE_COMP(x) ((x)>0?(x):0)就定义了一个宏。为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序...
您可能感兴趣的文章:详解C语言中的#define宏定义命令用法简单讲解C语言中宏的定义与使用如何在C语言的宏中使用类型关键字C语言中的内联函数(inline)与宏定义(#define)详细解析C语言中宏定义使用的小细节C语言宏定义...
覆盖了C语言的核心概念,包括语言简介、程序结构、数据类型、运算符、控制结构、函数、数组、指针、结构体与联合体、文件操作、预处理指令、宏定义、高级特性如变长参数列表和内联函数,以及调试和优化技巧。...
内联的语法 在类声明中定义方法;...由于函数边界模糊,该内联函数遇到问题后不好排查; 内联函数的建议 优化时,只针对高频代码内联; 对于调用频率高的(80%以上场景都会走到的路径): 函数规模<5行:
(1)什么是内联函数?...1、 inline 定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换,(像宏一样展开),没有了调用的开销,效率也很高。 2、 很明显,类的内联函数也是一个真
本文主要记录了C++中的inline函数,也就是内联函数,主要记录了以下几个问题: 一、C++为什么引入inline函数? 主要目的:用它代替C语言中表达式形式的宏定义来解决程序中函数调用的效率问题。 C语言中的宏定义:#...
6.4 内联函数和宏定义 第7章 指针与引用 7.1 指针基本问题 7.2 传递动态内存 7.3 函数指针 7.4 指针数组和数组指针 7.5 迷途指针 7.6 指针和句柄 第8章 循环、递归与概率 8.1 递归基础知识 ...
本文是总结了自己几个月的复习...1)内联函数和宏定义的区别?(*****) 2)sizeof size length 3)准备 5). 网络编程 6)、++i和i++深入分析 7) 数组的地址++ 8)bool, int, float与零的比较 9) malloc/calloc/real
文档内容涵盖了const关键字的使用、指针常量与常量指针的区别、static关键字的作用、全局变量与局部变量的区分、宏定义的作用、内存对齐的概念、inline内联函数的特点、C语言实现面向对象特性的方法、memcpy函数的...