欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 跟我学C++中级篇——内联的语义

跟我学C++中级篇——内联的语义

2025/9/26 8:58:28 来源:https://blog.csdn.net/fpcc/article/details/143448970  浏览:    关键词:跟我学C++中级篇——内联的语义

一、语义

语义,semantic。大白话就是语言中包含的意思。这么说吧,别人说某人有点虎,大家立刻明白了什么意思,这就是语义。编程语言是由字母和符号组成的一系列的规则组成的(语法),而由此对需求的具体实现就代表了需求(行为和目的),需求是人眼中的语义,而那些字母等所实现的内容是编程语言的语义。这样说可能不太专业,但比较通俗易懂,如果想要更严格更清晰、准确的定义,可以参看《编译原理》以及其它相关书籍。

二、内联的语义

在明白了什么是语义后,就回到本文。什么是内联的语义?在前面分析过ODR规则(单一定义规则),也就是正常的情况下所有的编译单元只能有一个定义。这个非常好理解,大家在学习C/C++时如果定义两个相同名字的变量或函数时,编译器会报这个错误。那么凡事总会有例外,能不能够允许在某些情况下可以有重复的定义呢?标准在向前推进,所以这个答案是肯定的。那就是inline的函数和变量。
从语义上看,就是允许重复定义的函数和变量,或者可以理解成让编译器忽略对此类命名的重复性检查。
内联在前面反复提到过,正常情况下,编译器是不保证有inline关键字的函数被真正转为内联。原因就在于内联的一个主要特点就是小,这个小不单纯指代码少(可参看前面的相关文章)。所以从反方向思考问题,其实可以说是对外联的一种补充。告诉编译器,这个其实开发者是想内联的。
从语义上考虑内联,其实可以从开发者的角度来认识inline关键字的意义,这也是一种非常好的容易理解的学习过程。

三、总结

内联这个问题,反复分析了很多次,每次都会有新的认识。从不同的角度看这个问题,会产生不同的看法,然后与前面的角度共同结合,就会有更新的认知产生。这也是不断的对inline内联进行分析的原因。从简单入手,把薄书读厚,真正全面的掌握其内在的各种知识。这不是陷入细节,是从更严谨的视野为更高层次的抽象做准备。
知行合一,与诸君共勉!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词