zoukankan      html  css  js  c++  java
  • inline的使用

    inline可以看成是函数的宏展开

    在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数,栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。

    #include <stdio.h>
    #include<string.h>
     
    // 函数定义为inline即:内联函数
    inline char* inline_test(int num) 
    {
        return (num % 2 > 0) ? "" : "";
    }
     
     
    int main()
    {
       int i = 0;
       for (i = 1; i < 10; i++) 
       {
           printf("inline_test:   i:%d   奇偶性:%s
    ", i, inline_test(i));   
       }
       
       return 0;
    }

    dbtest(i)的地方都换成了(i%2>0)?”奇”:”偶”,这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。

    inline的使用是有所限制的,inline只适合涵数体内代码简单的涵数使用,
    (1) 不能包含复杂的结构控制语句例如while、switch,并且不能内联函数本身不能是直接递归函数(即,自己内部还调用自己的函数)。
    (2) 而所有(除了最平凡,几乎什么也没做)的虚拟函数,都追阻止inlining的进行。
    这应该不会引起太多的惊讶,因为virtual意味着”等待,直到执行时期再确定应该调用哪一个函数“,
    而inline却意味着”在编译阶段,将调用动作以被调用函数的主体取代之“。
    如果编译器做决定时,尚不知道该调用哪一个函数,你就很难责成他们做出一个inline函数。

    [参考博客](https://blog.csdn.net/u011857683/article/details/81606433)

  • 相关阅读:
    最简单的as调用js
    搜集API
    Northwind SQL Code
    玩Gmail :)
    ASP.NET操作服务 注意权限
    在Windows 7下安装Oracle 11g的解决方法
    windows 7 下安装了 oracle p6810189_10204_Win32
    ClientScript遇到UpdatePanel
    sql server 2005 ,恢复xp_cmdshell的办法
    SQL查询表、视图、存储过程、函数的创建和变更时间
  • 原文地址:https://www.cnblogs.com/lanclot-/p/11268937.html
Copyright © 2011-2022 走看看