zoukankan      html  css  js  c++  java
  • 函数内联 inline,__inline,__forceinline

    ▶ 感谢大佬的总结【http://www.cnblogs.com/xuemaxiongfeng/articles/2464850.html】

    ● 存储限定符 __inline 与关键字 inline 的语义完全相同,不影响函数的类型,建议编译器在合理的情况下内联编译 C/C++ 函数

    内联减少了函数调用的开销,但却增加了代码量

    inline 仅用于 C++,__inline和 __forceinline 用于 C/C++

    编译器处理内联的情况:

      ■ 使用 /clr 编译选项时,如果函数使用了安全属性,则不会进行内联

      ■ 类定义的同时定义其成员函数,则默认内联,否则也可使用 inline 指定内联

       使用__forceinline关键字,但内敛失败,则给出 level 1 警告

    __forceinline 强制内联,不基于编译器的性能和优化分析而依赖于程序员的判断,仍不能内联的情况:

      ■ 函数或其调用者使用 /Ob0 编译器选项(Debug模式默认选项)

      ■ 函数和其调用者使用不同类型的异常处理。

      ■ 函数具有可变数目的参数

      ■ 函数使用了在线汇编(__asm{...}),但若开启编译选项 /Og,/Ox,/O1,/O2 则仍能内联

      ■ 是虚函数并且是虚调用,但虚函数的直接调用可以内联

      ■ 使用函数指针来对该函数进行调用

      ■ 函数被关键字 __declspec(naked) 修饰


     
  • 相关阅读:
    [cf 947E] Perpetual Subtraction
    loj3120. 「CTS2019 | CTSC2019」珍珠
    loj「LibreOJ NOI Round #2」不等关系
    loj6395. 「THUPC2018」城市地铁规划 / City
    loj2553. 「CTSC2018」暴力写挂
    loj6270. 数据结构板子题
    loj6358. 前夕
    loj6677. EntropyIncreaser 与菱形计数
    fiddler模拟接口响应数据
    Fiddler请求详解/autoResponseder重定向
  • 原文地址:https://www.cnblogs.com/cuancuancuanhao/p/10361374.html
Copyright © 2011-2022 走看看