c++ inline variable 内联变量 c++17
来源:互联网 发布:linux编写c语言 编辑:程序博客网 时间:2024/06/05 06:39
好象是C++17的新特性。
看http://en.cppreference.com/w/cpp/utility/in_place 这个的时候发现里面的 变量模板(C++17新特性) 前面加了inline修饰,
查中文结果没多少。英文的倒是已经有人讨论了。
说inline variable起到和inline function 类似的作用,“多个翻译单元的定义最终只保留一个,保证是相同的”
所以用inline修饰以后,许多以前不能在头文件定义的东西,可以写在头文件里了。
比如说类的static成员可以直接初始化了,因为用了inline,所以不会多重定义
还有什么inline static constexpr的事项。。
注意这里和inline提示函数优化的意思没什么关系,搞不清的见下面红字
https://stackoverflow.com/questions/38043442/how-do-inline-variables-work
草案N4640 7.16 提到了inline可以用作修饰variable,其他地方懒得翻了,看了看上面那个网页,大概知道效果和inline对函数的效果差不多。
完蛋。。仔细一深究,发现以前的理解太不到位了。。
看了 知乎大神暮无井见铃 的一个回答https://www.zhihu.com/question/65633138/answer/233497388 还有其在https://www.zhihu.com/question/66032208/answer/237524884 回答下的评论
还有这个https://www.zhihu.com/question/65522911/answer/232217942
才恍然大悟,应该是这么个意思
inline 修饰符保证了一个限制语义,即 “在每个翻译单元内的定义,最终只保留一个,保证定义总是相同的”,这个约束对不管是inline variable 还是inline function都起作用。
而对于inline function,inline 还起到了一个提示编译器,可对此函数进行代码展开的优化的作用(这就是常说的inline 的作用)
但是优化不优化不影响其限制语义,这两个是两码事!!!!
(实际上优化了,也是都展开成一样的,所以inline只保证其限制语义)
- c++ inline variable 内联变量 c++17
- c++-inline 内联函数
- 【C++】内联函数,inline
- c++inline内联函数
- c语言之内联inline
- C/C++内联函数(inline)
- C语言内联函数inline
- Visual C Inline ASM 内联汇编
- c语言中的的内联(inline)函数
- c语言中的的内联(inline)函数
- c语言中的的内联(inline)函数
- 【C++】:C++之内联函数(inline)
- c语言中的的内联(inline)函数
- 【C++】 C++中的内联函数inline总结
- c语言中的的内联(inline)函数
- c/c++中的inline(内联函数)
- 【每日一C之十三】C 语言inline内联函数
- 理解内联函数inline在C 中的用法
- ZOJ-3732 Graph Reconstruction(判定无向图度数序列能否可图化)
- 事件回调 和通知方式的总结(EventBus框架的使用)
- OnClose()和 OnDestroy()
- 【安全牛学习笔记】WEBSHELL
- OpenCV-将图像转化为灰度图,然后边缘检测
- c++ inline variable 内联变量 c++17
- linux 网络编程:使用两线程实现socket同时收发数据
- 重新理解单例模式
- 胸腔阻抗成像中的常用术语
- 迅为Exynos4412开发板例程及注释——注册字符类设备
- 入口文件模块绑定
- ubuntu16.04安装+cuda8.0+cudnn5.1+MXNET gpu版本安装+tensorflow gpu版本安装+chainerGPU版本安装
- leetcode-496. Next Greater Element I
- shell 创建多个指定大小的文件,循环删除指定大小文件