zoukankan      html  css  js  c++  java
  • c语言: inline(gcc)

    从汇编的角度看inline函数与非inline函数 http://blog.csdn.net/cxmanzhao/article/details/6801786

    强制内联和强制不内联  http://blog.csdn.net/hanchaoman/article/details/7270341

    inline - noinline  http://blog.sina.com.cn/s/blog_61b5fb9c0100ud55.html

    static inline int foo(int a)//这个函数大部分表现和普通的static函数一样,只不过在调用这种函数的时候,gcc会在其调用处将其汇编码展开编译而不为这个函数生成独立的
    汇编码。除了以下几种情况外:i 函数的地址被使用的时候。如通过函数指针对函数进行了间接调用。这种情况下就不得不为static inline函数生成独立的汇编码,否则它没有自>
    己的地址。ii 其他一些无法展开的情况,比如函数本身有递归调用自身的行为等。
    //extern inline int foo(int a)//一个externinline的函数只会被内联进去,而绝对不会生成独立的汇编码!即使是通过指针应用或者是递归调用也不会让编译器为它生成汇编>
    //inline int foo(int a)//在其定义所在文件内,它的表现和static inline一致:在能展开的时候会被内联展开编译。但是为了能够在文件外调用它,gcc一定会为它生成一份独>
    立的汇编码,以便在外部进行调用。
    {
        return 1+a;
    }
    
    volatile int main(void)
    {
        int i = 2;
        int a = 0;
        int b = 0;
        //int (*pf)(int) = foo;
        //a = pf(i);
    
        b = foo(i);
        return a+b;
    }
    ~           
  • 相关阅读:
    写在寒假
    Docker安装Redis(两种方式)
    JVM类加载机制
    RabbitMQ学习
    MySQL索引详解
    Java内存区域
    Window10下的Docker Desktop安装(保姆级教程)
    JVM垃圾回收
    力扣Hot100(目前进度89/100)
    C# 发送邮件实例
  • 原文地址:https://www.cnblogs.com/mylinux/p/5782119.html
Copyright © 2011-2022 走看看