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

【C++】内联函数 ① ( 内联函数引入 | 内联函数语法 )

文章目录

  • 一、内联函数引入
    • 1、内联函数引入
    • 2、代码示例 - 宏代码片段 与 内联函数
  • 二、内联函数语法
    • 1、内联函数语法说明
    • 2、代码示例 - 内联函数基本语法





一、内联函数引入




1、内联函数引入


" 内联函数 " 是 C++ 语言中的一种特殊函数 , 其目的是为了提高程序的执行效率 ;


在 C++ 中 , 定义常量

const int a = 10

可以替换 C 语言中的 宏定义

#define a 10

使用 常量 可以 替代 宏定义 ;


宏定义分为两种 , 一种是 宏常数 , 另外一种是 宏代码片段 ;

  • C++ 中使用 常量 替代 宏常数 ;
  • C++ 中用于 替代 宏代码片段 的是 inline 内联函数 ;

C++ 中建议开发者使用 " 内联函数 " 替代 C 语言中的 " 宏代码片段 " ;


宏代码片段 示例 :

// 宏代码片段
#define FUN(a, b) ((a) < (b) ? (a) : (b))

内联函数 示例 : 下面的 内联函数 可以 替换 上面的 宏代码片段 , 二者的功能基本相同 ;

// 内联函数
inline int fun(int a, int b)
{return a < b ? a : b;
}

2、代码示例 - 宏代码片段 与 内联函数


在下面的代码中 , 分别定义了 宏代码片段 FUN(a, b) 和 内联函数 inline int fun(int a, int b) , 二者实现的功能基本相同 , 都可以实现获取 a 和 b 两个值之间的较小值 ;


代码示例 - 宏代码片段 与 内联函数 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;// 宏代码片段 : 获取 a 和 b 中较小的值
#define FUN(a, b) ((a) < (b) ? (a) : (b))// 内联函数 : 获取 a 和 b 中较小的值
inline int fun(int a, int b)
{return a < b ? a : b;
}int main() {// 控制台暂停system("pause");return 0;
}




二、内联函数语法




1、内联函数语法说明


C++ 内联函数语法如下 :

inline 函数声明 {  // 函数体
}

函数的声明 包括 :

  • 函数名
  • 参数列表
  • 返回类型

在 函数声明 , 也就是 普通函数 之前加上 inline 关键字 , 就可以将 普通函数 声明为 内联函数 ;


内联函数 的 调用 与 普通函数一样 , 直接调用即可 ; 只是在编译时有区别 , 使用上没有区别 ;


2、代码示例 - 内联函数基本语法


下面的代码中 , 内联函数只是在 int fun(int a, int b) 函数声明之前 , 加上了 inline 关键字 ;

调用该函数时 , 直接使用 函数名 fun 调用即可 , 与普通函数调用方式相同 ;


代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;// 宏代码片段 : 获取 a 和 b 中较小的值
#define FUN(a, b) ((a) < (b) ? (a) : (b))// 内联函数 : 获取 a 和 b 中较小的值
inline int fun(int a, int b)
{return a < b ? a : b;
}int main() {// 调用内联函数int a = fun(1, 2);// 打印内联函数调用结果printf("a = %d\n", a);// 控制台暂停system("pause");return 0;
}

执行结果 :

a = 1
请按任意键继续. . .

在这里插入图片描述

相关文章:

【C++】内联函数 ① ( 内联函数引入 | 内联函数语法 )

文章目录 一、内联函数引入1、内联函数引入2、代码示例 - 宏代码片段 与 内联函数 二、内联函数语法1、内联函数语法说明2、代码示例 - 内联函数基本语法 一、内联函数引入 1、内联函数引入 " 内联函数 " 是 C 语言中的一种特殊函数 , 其目的是为了提高程序的执行效率…...

聊聊springboot的ConfigurationProperties的绑定

序 本文主要研究一下springboot的ConfigurationProperties的绑定 ConfigurationPropertiesBindingPostProcessor org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java /*** {link BeanPostProcessor} to bind {link PropertySo…...

Mysql和Oracle的语法区别?

Mysql和Oracle是两种不同的关系型数据库。 MySQL通常在中小型应用程序、Web应用程序和小型企业中广泛使用&#xff0c;因为它易于学习和部署&#xff0c;而且成本较低。 Oracle数据库通常用于大型企业和复杂的企业级应用程序&#xff0c;因为它提供了高度可扩展性、高可用性…...

F - LIS on Tree

F - LIS on Tree (atcoder.jp) 问题描述&#xff1a;树上LIS。 普通LIS。O(n * n)。 void solve() {int n; cin>>n;vector<int> f(n 1),a(n1);for(int i 1; i < n; i) {cin>>a[i];f[i] 1;for(int j 1; j < i; j) {if(a[i] > a[j]) f[i] max…...

2023 年全国大学生数学建模B题目-多波束测线问题

B题目感觉属于平面几何和立体几何的问题&#xff0c;本质上需要推导几何变换情况&#xff0c;B题目属于有标准答案型&#xff0c;没太大的把握不建议选择&#xff0c;可发挥型不大。 第一问 比较简单&#xff0c;就一个2维平面的问题&#xff0c;但有点没理解&#xff0c;这个…...

qt creater11 翻译国际化教程教程:

先出效果图。 闲聊几句&#xff1a;qt这个翻译很方便&#xff0c;能直接导出项目里所有文字。 具体步骤如下&#xff1a; 在Qt中&#xff0c;我们可以使用QTranslator类来实现多语言切换。以下是一般步骤&#xff1a; 1. 在你的源代码中&#xff0c;所有需要翻译的字符串都…...

【AWS实验 】在 AWS Fargate 上使用 Amazon ECS 部署应用程序

文章目录 实验概览目标实验环境任务 1&#xff1a;连接到实验命令主机任务 2&#xff1a;将应用程序容器化任务 3&#xff1a;构建 Web2048 容器任务 4&#xff1a;创建 Amazon ECR 存储库并推送 Docker 映像任务 5&#xff1a;创建 ECS 集群任务 6&#xff1a;测试应用程序总结…...

matlab几种求解器的选择fsolve-sole-vpasolve

文章目录 fsolvesolvevpasovle总结vpasovle的结果fsovle的结果 fsolve 求数值解 result_xfsolve(my_fun,x0,options)参数: my_fun:待求解函数&#xff0c;作为一个.m文件 x0:初始值&#xff0c;向量&#xff0c;可以仅仅指定其中的几项solve 强大的求解器。在方程组中求解析…...

无限访问 GPT-4,OpenAI 强势推出 ChatGPT 企业版!

继 ChatGPT 收费大降价、推出 App 版等系列动作之后&#xff0c;OpenAI 于今日宣布正式发布面向企业的 AI 助手——ChatGPT Enterprise 版。 与 To C 端的 ChatGPT 版本有所不同的是&#xff0c;该版本可以以更快速度无限制地访问 GPT-4&#xff0c;还可以用来处理更长输入的上…...

MySQL的故事——Schema与数据类型优化

Schema与数据类型优化 一、选择优化的数据类型 更小的通常更好 应该尽量使用可以正确存储数据的最小类型&#xff0c;更小的数据类型通常更快&#xff0c;因为他们占用更少的磁盘&#xff0c;内存和CPU缓存&#xff0c;并且处理时需要的CPU周期更少 简单就好 更简单的数据类型…...

C++编译和链接

编译和链接 一、源代码的组织 头文件&#xff08;.h&#xff09;&#xff1a;#include头文件、函数的声明、结构体的声明、类的声明、模板的声明、内联函数、#define和const定义的常量等。 源文件&#xff08;.cpp&#xff09;&#xff1a;函数的定义、类的定义、模板具体化的…...

【CSDN技术】Markdown编辑器如何使用-csdn博客编写入门

Markdown编辑器如何使用-csdn博客编写入门 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…...

【docker】运行redis

拉取redis镜像 有多种选择&#xff1a; redis&#xff08;基础版&#xff09;redis/redis-stack&#xff08;包含redis stack server和RedisInsight&#xff09;redis/redis-stack-server&#xff08;仅包含redis stack server&#xff09; docker pull redis docker pull r…...

Paddle训练COCO-stuff数据集学习记录

COCO-stuff数据集 COCO-Stuff数据集对COCO数据集中全部164K图片做了像素级的标注。 80 thing classes, 91 stuff classes and 1 class ‘unlabeled’ 数据集下载 wget --directory-prefixdownloads http://images.cocodataset.org/zips/train2017.zip wget --directory-prefi…...

SpringBoot 框架学习

java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 【黑马程序员pink老师前端】HTML 【黑马程序员pink老师前端】JavaScript基础大总结 【黑马程序员pink老师前端】JavaScript函数与作用域 【黑马程序员pink老师前端】JavaScript对象 数据库 【黑马程…...

java - lua - redis 完成商品库存的删减

java调用lua脚本完成对商品库存的管理 主页链接 微风轻吟挽歌的主页 如若有帮助请帮忙点赞 //lua脚本 获取到内存不够的商品StringBuilder sb new StringBuilder();//定义一个数组存储可能缺少库存的值sb.append(" local table {} ");//获取值sb.append(" …...

dbeaver离线安装clickhouse连接驱动

Clickhouse 数据库连接工具——DBeaver 主要介绍了Clickhouse 数据库连接工具——DBeaver相关的知识&#xff0c;希望对你有一定的参考价值。 Clickhouse 数据库连接工具——DBeaver 1.下载 DBeaver 和 连接驱动 https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.…...

2024腾讯校招后端面试真题汇总及其解答(二)

11.如果同时有5个任务在10分钟之后提交,或者更多,那么如果是一个个从队列中拿数据,那么前一个任务会影响后续任务执行时间,说一下解决思路 你的问题是一个典型的并发处理问题。如果你的系统是单线程的,那么的确,前一个任务的执行时间会影响后续任务的执行时间。但是,你…...

datagrip 相关数据连接信息无缝迁移

背景 因为公司换电脑了&#xff0c;接触的项目比较多&#xff0c;不同项目&#xff0c;不同环境的数据库连接有好几十个&#xff0c;如果在新电脑上挨个重新连接一遍劳心劳力&#xff0c;所以想看一下能不能直接将之前保存的连接信息直接迁移到新的电脑上面。 为此&#xff0c…...

不就是G2O嘛

从零开始一起学习SLAM | 理解图优化&#xff0c;一步步带你看懂g2o代码 SLAM的后端一般分为两种处理方法&#xff0c;一种是以扩展卡尔曼滤波&#xff08;EKF&#xff09;为代表的滤波方法&#xff0c;一种是以图优化为代表的非线性优化方法。不过&#xff0c;目前SLAM研究的主…...

开源技能库OpenClaw-Skill:构建标准化自动化技能模块的实践指南

1. 项目概述&#xff1a;从“OpenClaw-Skill”看开源技能库的构建与集成最近在社区里看到brabaflow/openclaw-skill这个项目&#xff0c;第一眼就被它的名字吸引了。“OpenClaw”听起来像是一个开源版的“机械爪”&#xff0c;而“Skill”则指向了技能或能力。这让我立刻联想到…...

USB Type-C接口技术解析与工程实践

1. USB接口技术演进与Type-C核心优势USB Type-C接口自2014年发布以来&#xff0c;凭借其革命性的设计理念迅速成为移动设备的主流接口标准。作为从业十余年的硬件工程师&#xff0c;我见证了从USB 2.0 OTG到Type-C的完整迁移过程。与传统micro-A/B接口相比&#xff0c;Type-C最…...

Agentica:模块化AI智能体框架的设计、实现与生产部署指南

1. 项目概述&#xff1a;当AI智能体遇上开源协作最近在AI智能体这个圈子里&#xff0c;一个名为“Agentica”的项目开始引起不少开发者的注意。它不是一个单一的AI应用&#xff0c;而是一个由wrtnlabs团队发起的开源项目&#xff0c;旨在构建一个模块化、可扩展的AI智能体框架。…...

Arm架构在中国市场的潜力与挑战:从技术选型到实践落地

1. 项目概述&#xff1a;从一次技术选型引发的深度思考最近在为一个边缘计算项目做硬件选型&#xff0c;团队里关于采用x86还是Arm架构的服务器争论了好几天。这让我想起&#xff0c;这几年在国内的云计算、数据中心、甚至个人消费电子领域&#xff0c;Arm架构的声音是越来越响…...

AI赋能终端:基于LLM的智能命令行助手实现与实战

1. 项目概述&#xff1a;当终端遇见AI&#xff0c;一场效率革命如果你和我一样&#xff0c;每天有超过一半的工作时间是在终端&#xff08;Terminal&#xff09;里度过的&#xff0c;那你一定对那种在命令行历史里反复翻找、手动敲击冗长命令、或者为了一个复杂的管道组合而绞尽…...

Apple Silicon Mac原生Linux游戏体验:Asahi Linux驱动突破与实战指南

1. 项目概述&#xff1a;当Apple Silicon Mac遇见原生Linux游戏如果你和我一样&#xff0c;既是Mac用户&#xff0c;又对在Linux系统上折腾抱有热情&#xff0c;那么最近Asahi Linux项目的进展绝对会让你心跳加速。长久以来&#xff0c;在搭载Apple Silicon&#xff08;M1、M2、…...

别再只拖控件了!VisionPro ToolBlock高级脚本入门:从变量声明到自定义运行记录的完整流程

别再只拖控件了&#xff01;VisionPro ToolBlock高级脚本入门&#xff1a;从变量声明到自定义运行记录的完整流程 在工业视觉检测领域&#xff0c;拖拽式图形界面曾让无数工程师快速入门&#xff0c;但当项目复杂度攀升时&#xff0c;那些隐藏在控件背后的脚本能力才是真正的效…...

Bootstrap-Sass 终极指南:如何在现代 Web 项目中快速集成 Bootstrap 3

Bootstrap-Sass 终极指南&#xff1a;如何在现代 Web 项目中快速集成 Bootstrap 3 【免费下载链接】bootstrap-sass Official Sass port of Bootstrap 2 and 3. 项目地址: https://gitcode.com/gh_mirrors/bo/bootstrap-sass Bootstrap-Sass 是 Bootstrap 3 的官方 Sass…...

如何高效管理命令历史:yargs readline功能的终极指南

如何高效管理命令历史&#xff1a;yargs readline功能的终极指南 【免费下载链接】yargs yargs the modern, pirate-themed successor to optimist. 项目地址: https://gitcode.com/gh_mirrors/ya/yargs 在现代命令行工具开发中&#xff0c;提供流畅的用户交互体验至关…...

开源AI应用构建平台Casibase:从架构设计到生产部署全解析

1. 项目概述&#xff1a;一个开源的AI应用构建平台最近在折腾AI应用开发的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;想法很多&#xff0c;但落地太难。从模型选型、API对接、到前端交互、数据管理&#xff0c;每一个环节都够喝一壶。特别是当你想把多个模型、多种…...