热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

内联vs内联vs内联vs内联?-inlinevs__inlinevs__inline__vs__forceinline?

Whatarethedifferencesbetweenthesefourinline(key)words?这四个内联(关键字)的区别是什么?inline,__inline,

What are the differences between these four inline (key)words?

这四个内联(关键字)的区别是什么?

inline, __inline, __inline__, __forceinline.

内联、__inline __inline__ __forceinline。

3 个解决方案

#1


75  

inline is the keyword, in C++ and C99.

inline是关键字,在c++和C99中。

__inline is a vendor-specific keyword (e.g. MSVC) for inline function in C, since C89 doesn't have it.

__inline是C中的一个特定于供应商的关键字(例如MSVC),因为C89没有内联函数。

__inline__ is similar to __inline but is from another set of compilers.

__inline__类似于__inline,但来自另一组编译器。

__forceinline is another vendor-specific (mainly MSVC) keyword, which will apply more force to inline the function than the __inline hint (e.g. inline even if it result in worse code).

__forceinline是另一个特定于供应商(主要是MSVC)的关键字,它将对内联函数施加比__inline暗示更大的压力(例如,即使内联导致更糟糕的代码)。

There's also __attribute__((always_inline)) in GCC and clang.

在GCC和clang中也有__attribute__((always_inline))。

#2


18  

__inline, __inline__ and __forceinline are all implementation specific. Because of the double underscore they are all identifiers reserved for the implementation so shouldn't conflict with identifiers used in applications.

__inline、__inline__和__forceinline都是特定于实现的。由于双下划线,它们都是为实现保留的标识符,因此不应与应用程序中使用的标识符冲突。

inline is the only C++ keyword.

内联是唯一的c++关键字。

#3


8  

For the Visual Studio compiler it means:

对于Visual Studio编译器,它的意思是:

  • inline - suggestion to the compiler to inline your code

    内联—建议编译器内联您的代码

  • __forceinline - overrides the builtin compiler optimization and generates inline code

    __forceinline -重写构建编译器优化并生成内联代码

For more details see: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx

详情请参阅:http://msdn.microsoft.com/en- us/library/z8y1y1y88%28vs.71%29.aspx


推荐阅读
  • 本文详细介绍如何在Android模拟器上安装TaintDroid的过程,包括解决源代码链接失效及服务器文件变动等问题,旨在帮助后续用户避免不必要的麻烦。 ... [详细]
  • 本文详细介绍了 KALDI 中 CUDA 矩阵库的使用与功能,包括其如何提高计算效率以及在不同环境下的适应性。 ... [详细]
  • 深入解析Pytest Fixture与Conftest的高级应用
    本文详细探讨了Pytest中的Fixture机制及其在conftest.py文件中的全局配置应用,涵盖Fixture的基本概念、定义、多种使用场景以及作用域等内容,适合希望深入了解Pytest测试框架的开发者。 ... [详细]
  • 本文主要解决了在编译CM10.2时出现的关于Samsung Exynos 4 HDMI HAL库中SecHdmiV4L2Utils.cpp文件的编译错误。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • Android 5 及以上版本中使用存储访问框架(SAF)实现 SD 卡写入权限的方法
    本文探讨了在 Android 5 及更高版本中通过存储访问框架(Storage Access Framework, SAF)实现对 SD 卡文件的写入与重命名操作。文章分析了 SAF 的工作原理,并提供了一个示例应用的代码实现,展示了如何正确获取并使用用户授予的写入权限。 ... [详细]
  • 深入解析ASP.NET中的HttpHandler、HttpModule与IHttpHandlerFactory
    本文探讨了ASP.NET页面生命周期中的关键组件——HttpHandler、HttpModule和IHttpHandlerFactory的工作原理及其应用场景。通过实例分析,帮助读者更好地理解和利用这些组件来优化Web应用程序。 ... [详细]
  • PyQt5中进度条(QProgressBar)的使用指南
    本文介绍了如何在PyQt5中使用进度条(QProgressBar)来展示任务的完成情况。包括初始化进度条、设置其最大最小值以及更新进度的方法。 ... [详细]
  • 探讨了生成时间敏感的一次性伪随机密码的方法,旨在通过加入时间因素防止重放攻击。 ... [详细]
  • 深入解析mt_allocator内存分配器(二):多线程与单线程场景下的实现
    本文详细介绍了mt_allocator内存分配器在多线程和单线程环境下的实现机制。该分配器以2的幂次方字节为单位分配内存,支持灵活的配置和高效的性能。文章分为内存池特性描述、内存池实现、单线程内存池实现、内存池策略类实现及多线程内存池实现等部分,深入探讨了内存池的初始化、内存分配与回收的具体实现。 ... [详细]
  • 本文深入探讨了领域驱动设计(DDD)中的聚合概念及其在事件溯源架构中的应用。聚合是一组紧密相关的类,这些类作为一个整体运作,形成一个有明确边界的组织。只有通过聚合根才能与聚合内的对象进行交互。 ... [详细]
  • 本文汇集了作者在准备研究生入学考试过程中的心得体会,包括备考策略、复习重点及应对考试的心理调适技巧,旨在为即将参加考研的学生提供实用建议。 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
author-avatar
372630243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有