define和inline关键字比较

这里我们学习一下define和inline关键字的用法,以及它们的区别。

define:定义预编译时处理的宏,只是简单的字符串替换,无类型检查

inline:1、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义,编译阶段完成。  2、内联函数要做类型安全检查,inline是指嵌入代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数来说,inline函数可以得到一定效率的提升,和c时代的宏函数相比,inline函数更加安全可靠,这个是以增加空间的消耗为代价的。

ps:定义内联函数只是给编译器一个建议,但是最后的决定权还是在于编译器,如果函数的逻辑比较复杂(有循环递归之类的),此时则会内联失败。根据google编程规范,内联函数一般在10行以下,而且逻辑简单。



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 10:16:44

define和inline关键字比较的相关文章

define 与 inline

#define和inline 的区别 define:定义预编译时处理的宏:  只进行简单的字符替换,无类型检测 typedef:定义类型别名 用于处理复杂类型  例: typedef int A:  则:A a: //定义a为int inline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝 既为提出申请,不一定会成功 static一.产生背景 引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉

c++中static和inline关键字

一.static变量和static函数 static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式. 这两者在存储方式上并无不同.这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量

#define\const\inline的区别与联系

总结: const用于代替#define一个固定的值,inline用于代替#define一个函数.是#define的升级版,为了消除#define的缺陷. #define和inline 的区别 define:定义预编译时处理的宏:  只进行简单的字符替换,无类型检测 typedef:定义类型别名 用于处理复杂类型  例: typedef int A:  则:A a: //定义a为int inline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝 既为提出申请,不一定会成功 stat

inline关键字的作用

一.在C&C++中,inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 如下面一宏定义表达式: #define express(v1,v2) (v1+v2)*(v1-v2) 取代这种形式的原因如下: 1. C中使用define这种形式宏定义的原因是因为,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因. 2. 这种宏定义在形式上

C++ inline关键字

1. C的延续 C++是一门承上启下的编程语言,没有写class他就是C语言,这也导致了很多编译器既支持C++也支持C.inline关键字其实更多地出现在C语言当中,因为很多短小的工作函数可以达到快速执行的效果. 将函数声明为inline实际上表示编译器会将inline函数粘贴到调用点处,省去了原本函数查找.调用的时间 2. inline使用原则 要定义一个函数为inline函数,需要满足以下原则: 1)不可包含复杂的结构控制语句,包括循环控制和复杂的条件控制,例如while, switch.

C语言的inline关键字

一直以来我就认为inline关键字是C++中的.今天我看到一篇讲关于C语言的inline关键字的.呵呵... 原来是我弄错了.看来以后定义一些宏命令完全可以用这样的一些inline函数来代替了.以下是我从网上搜集来的知识点(来 源:http://superding.spaces.live.com/Blog/cns!89E842A8485366C7!1137.entry) 本文介绍了GCC和C99标准中inline使用上的不同之处.inline属性在使用的时候,要注意以下两点: inline关键字

转: inline关键字使用

1.inline用在函数声明时,还是函数定义时?还是两边都加? 首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义. 只要在同一个文件中,声明和定义至少其一加“inline”修饰即可. 2.inline的函数可不可以同时是虚函数? 可以. 因为inline只是给编译器的一种建议,编译器并不保证一定进行内联展开,也并不保证一定不进行内联展开.更详细地讲,假如有10个地方调用了这个函数,并不保证10处都会内联展开或都不会内联展开,完全可能实际上只展开了5处.另外5处没有展开. 因

define and inline

我们编写一个求一个数平方的运算, #define宏定义实现如下: #define SQUARE1(X) X*X inline内联函数实现如下: inline int SQUARE2(int X){return X*X;} END 步骤2——定义所需变量 1 首先定义所需变量: int a=5,b=5; int s1=0,s2=0; 定义a和b值相同,其中a代入#define测试,b代入inline测试: s1存储#define结果,s2存储inline结果. END 步骤3——测试#define

c++和c语言的inline关键字对比

其实我一直比较喜欢C语言,对C++的了解少之又少,但是最近由于需要翻看起C++的书籍来.在C++沉思录当中,看到了这样一句话:“我还指出,由于这些成员函数定义在Trace类自身的定义内,C++会内联扩展它们,所以就使得即使在不进行跟踪的情况下,在程序中保留Trace对象也不必付出许多代价.——Koenig,<C++沉思录中文版>,page2”.K先生所举例的代码如下所示: 1 class 2 Trace{ 3 public : 4 Trace(){noisy = 0;} 5 void prin