为什么要在 C++ 中使用“inline”关键字?

2023-12-04

我刚刚研究了 C++ 关键字的使用和优点/陷阱inline on the 微软网站我明白这一切。

我的问题是:编译器是否评估函数以查看内联它们是否会导致代码更高效并且inline关键字只是对编译器的一个建议,为什么要为关键字烦恼呢?

编辑:很多人都在抱怨我使用__inline代替inline。我想指出的是__inline是微软特有的:所以它没有错,只是不一定是你习惯的。(还修复了网站链接)

EDIT2:重新格式化问题以指示inline关键字(在所有 C++ 中使用)而不是 Microsoft 特定的__inline关键词。


首先,它不是__inline, but inline.

其次,效果inline在单一定义规则中具有无可否认的重要意义。它允许您多次定义函数并让编译器来处理它。

第三,关于实际的内联,这是你表达你的方式opinion不仅向编译器介绍该函数,还向那些稍后可能阅读您的代码的人介绍该函数。可以说,在很多情况下,这是一种发泄情绪的方式。基本上,这是你告诉其他人和你自己的一种方式:“我觉得这个函数太小(或太专业),无法证明调用开销是合理的,所以不要让我对这种嘲讽负责。我做了我所有的事情可以。如果不是你们愚蠢的全公司编码标准,我会把它做成一个宏”。从这方面来说,它是一种正式评论.

第四,看到您使用了特定于实现的关键字拼写,我注意到某些实现为您提供了替代关键字,让您有机会变得更加……呃……有说服力的您希望内联该函数。在 MS 编译器中,这将是__forceinline.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么要在 C++ 中使用“inline”关键字? 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 画布 - 移动图像问题

    我的使用画布的脚本有问题 我想移动我的图像 但使用drawImage图像移动 但结果是这样的 所以 我的代码是 function desenhaBonecoDir var ctxt document getElementById camad
  • Wix 设置中的警告

    我是 Wix 工具包的新手 我正在使用 Wix Toolkit 为我的应用程序创建一项设置 但是当我尝试使用 Wix 构建它时 它显示此警告 C Users BNK Desktop wix popup setup wxs 60 警告 LGH
  • 如何在 Windows 窗体应用程序中使用此 WndProc?

    请指导我如何使用这个WndProc在 Windows 窗体应用程序中 private IntPtr WndProc IntPtr hwnd int msg IntPtr wParam IntPtr lParam ref bool handl
  • 有 C++ 的 LINQ 库吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何与平台无关 不是 CLI 的动作可以让 LINQ 以某种方式支持 C 我的意思是 世界上很大一部分服务器框架都在 UNIX 风格上运行 并
  • 对“preg_replace():未知修饰符”进行故障排除[重复]

    这个问题在这里已经有答案了 我正在尝试实现一个开源字符串到链接转换器 但我有一个错误 坦率地说我已经尝试了所有方法 但不知道出了什么问题 这是代码 chatmessage preg replace space www a zA Z0 9 a
  • Yii 中的致命错误处理

    有没有办法通过电子邮件 记录基于 Yii 框架的项目中发生的 php 致命错误 例如 可以将 Yii 配置为通过电子邮件发送 未定义变量 错误 但致命错误只能通过单独的 未集成到框架代码中的方式进行监控 这并不理想 在 php 中 可以使用
  • 是否可以从iframe中的JS调用父文档中的Javascript函数?

    iframe 和父文档都位于同一域中 我想做的是给 iframe 中运行的 js 一个驻留在父文档中的回调函数 这可能吗 window frames testFrame org myorg events onDataReady addLis
  • 将项目导入 Git 时如何保留后续版本的日期?

    我的桌面上有一个文件夹 其中包含以下内容 SABS SABS v0 1b sabs sh SABS v0 2b sabs sh SABS v0 3b sabs sh SABS v0 4b sabs sh SABS v0 5b sabs sh
  • 如何使用 Java 代码使用 HSSF 应用单元格背景颜色

    我正在尝试根据测试用例执行状态格式化单元格背景颜色 就像如果测试用例通过了 那么单元格背景应该变成Green和文字颜色应该是White 同样 对于失败的测试用例单元格背景颜色 Red和文字颜色 White 为此 我尝试了以下脚本 背景 HS
  • 将java中的对象类更改为子类

    我想改变类的对象Car到类的对象FastCar 很容易看出 在这种情况下 main 方法返回了一个错误 我写它是为了更容易表达我的问题 如何围绕超类的对象构建子类的对象 考虑到班级可能不像下面的示例那样小 最好的方法是什么 该解决方案也应该
  • vue 中的 vuelidate 属性“$v”在渲染期间被访问,但未在实例上定义

    我正在构建一个包含 html 文件中表单的 vue 组件 需要使用 vuelidate 库验证表单 显示以下警告并且验证不起作用 Vue warn 属性 v 在渲染期间被访问 但并未被访问 在实例上定义 在 const required m
  • Matlab 中稀疏矩阵赋值变得非常慢

    我正在用来自我逐行读取的文本文件的值填充稀疏矩阵 P 230k 290k 这是 简化的 代码 while C textscan text line d delimiter EmptyValue 0 line number line numb
  • 如何抑制Excel饼图中的类别为零值?

    The data source for the Pie chart is Pivot table with values set as of column total I am able to suppress the data value
  • 抓取似乎没有 URL 的页面

    我正在尝试抓取这些列表 并在属于我的客户的网站上为这些职位列表提供更多曝光 问题是我需要能够链接到特定的职位列表以便求职者申请 这是页面我正在尝试保存来自的列表链接 如果我可以保存一个地址供求职者点击查看原始列表然后进行申请 那就太理想了
  • 种子洗牌可以逆转吗?

    采用这个函数 它是一个有种子的 Fisher Yates 洗牌 顺序是随机的 但在给定相同种子的情况下可以重现 function seeded shuffle array items seed false items array value
  • 在 Eclipse ADT 中找不到 v7 首选项支持库

    I m currently using Eclipse ADT 23 0 7 for android app development My SDK manager is updated for Android 6 0 shown in be
  • 如何根据 Pandas 数据框中的列表对索引行重新排序

    我有一个如下所示的数据框 company Amazon Apple Yahoo name A 0 130 0 C 173 0 0 Z 0 0 150 它是使用以下代码创建的 import pandas as pd df pd DataFra
  • R中将两个统计表的结果连接到一张表中

    继续这个问题组间比较曼 惠特尼检验 我决定创建一个新主题 Rui Barradas 的解决方案帮助我计算了 1 2 组和 1 3 组的 Mann Whitney lst lt split mydat mydat group lapply l
  • 在java中,如何在另一个字符串数组中搜索字符串数组?

    我有两个不同的字符串数组 String str1 ABC CDE DEF FGE ERT String str2 ABC FGE 我想知道str1是否有str2的所有成员 如何在str1中搜索str2 Arrays asList str1
  • 为什么要在 C++ 中使用“inline”关键字?

    我刚刚研究了 C 关键字的使用和优点 陷阱inline on the 微软网站我明白这一切 我的问题是 编译器是否评估函数以查看内联它们是否会导致代码更高效并且inline关键字只是对编译器的一个建议 为什么要为关键字烦恼呢 编辑 很多人都