当前位置: 首页 > article >正文

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

一、语义

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

二、内联的语义

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

三、总结

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


http://www.kler.cn/a/376003.html

相关文章:

  • Python酷库之旅-第三方库Pandas(186)
  • 配置BGP与IGP交互和路由自动聚合示例
  • 【大数据学习 | kafka】kafka的ack和一致性
  • AutoGLM:智谱AI的创新,让手机成为你的生活全能助手
  • 【新闻转载】RansomHub勒索威胁曝光:OMA机场运营面临3TB数据泄露危机
  • mybatis 参数判断报错的问题
  • qt QDialog详解
  • static全局/局部变量/函数和普通全局/局部变量/函数的区别
  • 数据结构初识及顺序表详解
  • Mysql 8.4.3LTS 的离线部署
  • vue中时间插件moment
  • Java中的JVM(Java虚拟机)是什么?
  • 【OD-支持在线评测】电脑病毒感染(200分)
  • Android版本适配策略
  • 模式匹配类型
  • 使用AWS Redshift从AWS MSK中读取数据
  • Dropout 技术:防止神经网络过拟合的有效手段
  • 20241029软考架构-------软考案例9答案
  • AI 大模型的发展趋势是怎样的?
  • 量子神经网络(Quantum Neural Network):结合量子计算的 AI 新探索
  • cv.dnn.blobFromImage参数详解
  • Unity项目使用的.net版本
  • 【网络】HTTP(超文本传输协议)详解
  • Java面试题十五
  • 基于大数据的智能家居销量数据分析
  • 基于OSS搭建在线教育视频课程分享网站