社区
C++ 语言
帖子详情
全局的"内联函数"在声明时加inline关键字还是在定义时?
fat_how
2005-10-13 04:15:06
谢谢
...全文
765
14
打赏
收藏
全局的"内联函数"在声明时加inline关键字还是在定义时?
谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
prove_wj
2005-10-14
打赏
举报
回复
定义时加;
并,保证声明与定义的一致!
cdo
2005-10-14
打赏
举报
回复
当然是在定义时呀。
北极猩猩
2005-10-14
打赏
举报
回复
内连函数的定义只在包含它的原文件中有效。
所以对于内连函数,声明就是定义,定义就要声明。
而且在不同的CPP文件中相同名称的内连函数,事实上是不同的函数
power77
2005-10-14
打赏
举报
回复
inline function can have multiple identical definitions!
SammyLan
2005-10-13
打赏
举报
回复
看清楚再回答
(=_=)
多于一个cpp文件,而且多个cpp文件用到此内联函数
内联必须放到头文件实现
(=_=)
power77
2005-10-13
打赏
举报
回复
不好意思,没看清楚标题。
全局的哈,呵呵,不是类成员函数。
最好在一个头文件中定义,并加上inline。
如果在cpp中,则必须在每个引用了这个全局函数的文件中都要定义一次,才能保证尽量让编译器inline这个函数。CPL中明确说了这点的哈。
An inline function must be defined - by identical definitions - in every translation unit in which it is used!
power77
2005-10-13
打赏
举报
回复
谁说的都要加?
cpp primer里面写了
如果declaration加了,definition就不需要了。
反正二者之一加一个都行了,都加也不错。
最好定义在头文件中。不过定义在cpp中也没有错误。
jixingzhong
2005-10-13
打赏
举报
回复
定义和声明的时候都要加的 !!
inline 函数很特殊, 楼主要小心啊 哈哈.
一般, 最好的是把定义放在 头文件 中!!因为inline函数是要被展开的, 和普通的函数不一样, 它在程序编译以后就没有函数在了, 所以, 要在所有用到 inline函数的 文件中定义这个函数, 为了省力气, 当然是在头文件中定义, 然后包含一下就好了 ...
archim
2005-10-13
打赏
举报
回复
inline函数放在cpp文件里是不能被其它的文件使用的。感觉好像相当于被static修饰了。
note_code
2005-10-13
打赏
举报
回复
定义时加
qfeng_zhao
2005-10-13
打赏
举报
回复
很多问题不懂就上机
xupingle
2005-10-13
打赏
举报
回复
同意 russilong()
v41dugu
2005-10-13
打赏
举报
回复
呵呵 你自己试试就知道了。。。。有任何一个不加就要报错哟~~
有的问题自己多试试就知道结果了~~~
楼主加油!!!
russilong
2005-10-13
打赏
举报
回复
单在声明时加是没用的,定义是必须要加。但往往声明与定义在一起,放在头文件中。
《c语言深度解析》第3、4章 存储类、生命周期、作用域、链接域,指针与函数
课程内容:第3章:存储类与auto、static、register
关键字
指令、常量、变量的生命周期变量与函数的作用域链接域与extern、static
关键字
声明
的意义第4章:存储空间、符号、地址一级指针与多级指针野指针与段错误void *指针类型const与指针函数指针 函数调用—栈的使用过程回调函数和函数指针数组指针与函数传参递归函数
内联函数
【C++】
内联函数
inline
引入
内联函数
的原因 一个 C++程序的执行过程可以认为是多个函数之间的相互调用过程,它们形成了一个调用链条,这个链条的起点是 main(),终点也是 main()。当 main() 调用完了所有的函数,它会返回一个值(例如return 0;)来结束自己的生命,从而结束整个程序。函数调用是有
时
间和空间开销的。程序在执行一个函数之前需要做一些准备工作,要将实参、局部变量、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码;函数体中的代码执行完毕后还要清理现场,将之前压入栈中的数据都出栈,才能接着执行
复习笔记(四)——C++
内联函数
什么是
内联函数
内联函数
是指通过
inline
关键字
定义
的函数,包括
全局
函数和类的成员函数。
内联函数
在编译阶段展开,编译器将整个函数体代码嵌入到调用处,不产生函数跳转。
内联函数
的
定义
inline
关键字
必须用于函数体
定义
,在函数
声明
前使用无效
inline
int add(int x, int y); //
声明
处使用无效 int add(int x, int y); //正确
声明
方式
inline
int add(int x, int y) { //
定义
处使用有效 retur
C++:
内联函数
介绍 在函数返回类型前加上
关键字
inline
就可以将函数指定为
内联函数
。
内联函数
可避免函数调用开销。因为
内联函数
将在程序每个调用点上“内联地”展开,如cout 在编译
时
将展开为cout (a==b)。
inline
bool IsIntEqual( int a, int b ) { return static_castbool>( a == b ); }
内联函数
适用于优化小的,只
从编译器的角度理解
内联函数
1.
内联函数
定义
: GCC中的
inline
函数可以相当于在一个普通的
全局
函数加上
inline
属性。
inline
关键字
仅仅是建议编译器在编译的
时
候做内联展开处理,而不是强制在gcc编译器中,如果吧编译选项设置为负无穷,即使是
inline
函数也不会被内联展开,除非设置了强制内联展开的属性(attribute((always_
inline
)))。
关键字
inline
必须与函数
定义
体放在一起才能使函数成为内联,仅将
inline
放在函数
声明
前面不起任何作用 普通函数调用: 系统首先要跳跃到该函数的入口地址,执行
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章