[转]__forceinline关键字

Posted on 2011-08-19 10:07 单鱼游弋 阅读(2229) 评论(0) 编辑 收藏

编辑器加载中...

C++提供了内联函数,目的是为了提高函数的执行效率。内联函数在函数声明前面加上关键字inline 就可以了
    如:inline int FunctionOne(int x);

在VC++中可使用另一关键字_forceinline 代替inline 关键字.这个关键字将命令编译器跳过一般的ROI 分析(Return On Investment --一种编程缩略语),将所对应的代码强行内联.在有写时候,编译器会拒绝将一个函数内联,使用这个关键字,用户只得到一个编译警告,就可强行内联.

在使用内联函数时,是由编译器决定它们是按普通函数处理还是将调用函数部分用实际的函数体代码替换。不允许将递归函数进行内联(VC++可进行编译器选项设置,允许内联扩展到一定深度)

下面情况不宜使用内联:

(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。  
    (2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
     一个好的编译器将会根据函数的定义体,自动地取消不值得的内联(这进一步说明了inline不应该出现在函数的声明中)。

forceinline关键字相关推荐

  1. ue4 飞机大战游戏开发日记

    前言:本项目为siki学院发布于哔哩哔哩的开源项目,本文真理了我在复刻项目时遇上的问题,并且记录了开发过程. step1. 资源导入及环境搭建 1. 资源的导入 通过拖拽将项目资源文件夹拖拽如cont ...

  2. 每个程序员都应当知道的编译器优化知识

    高级编程语言提供的函数.条件语句和循环这样的抽象编程构造极大地提高了编程效率.然而,这也潜在地使性能显著下降成为了用高级编程语言写程序的一大劣势.在理想条件下,在不以性能为妥协的情况下,你应该写出易读 ...

  3. 、简述global关键字的作用_详解static inline关键字

    详解static inline关键字 本文章为知乎用户 @徐yang哟 原创,禁止抄袭! 灵感来源 在查stm32的LL库部分函数的API时,有时会查到这种函数: __STATIC_INLINE vo ...

  4. 详解static inline关键字

    本文章为知乎用户 @徐yang哟 原创,禁止抄袭! 灵感来源 在查stm32的LL库部分函数的API时,有时会查到这种函数: __STATIC_INLINE void LL_GPIO_SetPinOu ...

  5. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  6. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  7. volatile关键字之全面深度剖析

    引言 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字 ...

  8. mysql屏蔽关键字实现方法_PHP屏蔽过滤指定关键字的方法

    本文实例讲述了PHP屏蔽过滤指定关键字的方法.分享给大家供大家参考.具体分析如下: 实现思路: 一.把关键字专门写在一个文本文件里,每行一个,数量不限,有多少写多少. 二.PHP读取关键字文本,存入一 ...

  9. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

最新文章

  1. Social regularizations
  2. python中字典的几种定义方式
  3. Oracle Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax error, expect
  4. iBatis入门和开发环境搭建
  5. SpringBoot 精通系列-SpringBoot整合Redis的常用操作
  6. C++类的继承与多重继承的访问控制【protected,private继承方式】
  7. 大数据之_数据采集Flume_Flume了解_学习内容介绍---Flume工作笔记002
  8. c语言写贪吃蛇什么水平_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码...
  9. 使用JsonCpp实现JSON文件读写操作的方法
  10. Kubernetes Eviction Manager源码分析
  11. sql不同数据处理方式完成同一处理结果对日志增长的影响
  12. 2021-09-02最小栈
  13. PCB生成BOM表、网络表添加logo并且输出为Gerber文件
  14. pyqt5 QListWidget的使用
  15. 企业如何做好数据防泄漏需求分析
  16. Socks代理上网工具 tsocks
  17. 查看WIN10 SDK的版本
  18. 7、ARM嵌入式系统:LCD/数码管/OLED初始化
  19. 论文笔记MEMC-Net TPAMI
  20. js使用BOS Uploader上传视频到百度云

热门文章

  1. Oracle之表分区、分区索引(一)
  2. JDBC详解系列之流程
  3. mycat配置访问oracle_教程 | MySql都会了,确定不学习一下MyCat分片?
  4. Workbooks 对象的 Open 方法参数说明
  5. Get data from file(xxx.png) failed!
  6. Llama-impala on yarn的中间协调服务
  7. docker基础用法
  8. STC12单片机串口U盘测试程序源码
  9. jQuery获取iframe的document对象的方法
  10. Windows Azure 社区新闻综述(#70 版)