内联函数

✍ dations ◷ 2025-11-02 10:10:22 #最优化

在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译。

内联扩展是一种特别的用于消除调用函数时所造成的固有的时间消耗方法。一般用于能够快速执行的函数,因为在这种情况下函数调用的时间消耗显得更为突出。这种方法对于很小的函数也有空间上的益处,并且它也使得一些其他的优化成为可能。

没有了内联函式,程式员难以控制哪些函数内联哪些不内联;由编译器自行决定是否内联。加上这种控制维度准许特定于应用的知识,诸如执行函式的频繁程度,被利用于选择哪些函数要内联。

此外,在一些语言中,内联函数与编译模型联系紧密:如在C++中,有必要在每个使用它的模块中定义一个内联函数;与之相对应的,普通函数必须定义在单个模块中。这使得模块编译独立于其他的模块。

通常,在C语言中,内联展开的功能由带参宏(Macros)在源码级实现。内联提供了几个更好的方法:

C++,C99. C11和GNU C都支持内联函数,然而1989 ANSI C,这个最被广泛使用的C标准却不支持。在Ada中,关键字“pragma”可以用来声明内联。其他的大部分编程语言,包括Java和函数式语言,不支持内联函数,但他们的编译器常常进行强制性的内联扩展。不同的编译器在内联扩展上有处理不同复杂程度函数的能力。主流的C++编译器如Visual C++和GCC提供了一个选项来自动内联任何一个合适的函数,即使它们没有被声明为内联函数。

对于C++,inlineextern inline同义:内联函数在各个编译单元都可能会生成一份,要求各处定义完全一致。内联函数在C++中的写法如下:

inline int max (int a, int b){    if (a > b)        return a;    else        return b;}
a = max (x, y); 

对于C99,inline为编译单元内部可见,extern inline为编译单元外部也可见。

除了通常使用内联扩展可能带来的问题,作为一种编程语言特性的内联函数也可能并没有看起来那么有效,原因如下:

相关

  • 四犬四犬,又称四狗、四猛、四勇等,即成吉思汗(铁木真)座下四名大将:者勒蔑、忽必来、哲别、速不台,合称“四犬”。
  • 军事行动军事行动,指有组织地使用武装力量的活动。在战争时期和和平时期有着不同的意义。往往配合军事计划,以代号指称不同的任务以便执行。武装侵略及其防备、分裂国家主权及其防备。
  • 哈塔米穆罕默德·哈塔米(波斯语:سید محمد خاتمی‎,1943年9月29日-),出生于伊朗亚兹德省阿尔达坎,是一位伊朗政治家和学者,从1997年8月2日至2005年8月2日出任第五任伊朗总统,卸
  • 马明哲马明哲(1955年12月5日-),中国平安保险(集团)股份有限公司 党委书记、董事长兼CEO。马明哲为第十、十一届全国政协委员。中南财经大学货币银行学博士(在职研究生)。马明哲是中国金融
  • 硝酸氧钛硝酸氧钛,又称碱式硝酸钛,是一种无机化合物,化学式为TiO(NO3)2。硝酸氧钛可以由TiOCl2和氨水(1:1溶液)在4℃反应,沉淀用稀HNO3溶解得到。硝酸氧钛作为氧化剂,和有机物(如甘氨酸)混合,
  • 非洲女王号《非洲女王号》(The African Queen)是一部1952年的美国冒险电影,改编自C·S·福雷斯特1935年的同名小说。该片由约翰·休斯顿导演,山姆·斯皮格制片,约翰·休斯顿和詹姆斯·阿吉
  • 赵济羹赵济羹(1898年-1975年),京剧琴师、教育工作者,人称赵喇嘛。曾给裘桂仙、金少山、言菊朋、谭小培、谭富英等多位京剧表演艺术家操琴,录制许多京剧唱片。中华人民共和国成立后,在上海
  • Make Up (迷你专辑)《Make Up》是韩国女子音乐组合T-ara成员朴孝敏的第一张韩语迷你专辑,由MBK娱乐于2014年6月30日发布。2014年5月29日,孝敏透过经纪公司表示将回归乐坛,专辑新曲名称将于6月2日
  • 周之茂周之茂(16世纪-1644年),字松如,黄州府麻城县人,明朝政治人物。周之茂在万历四十三年(1615年)中举人,崇祯七年(1634年)成进士,担任都水郎中;十五年(1642年)时到云南主持乡试,回朝后推辞升任淮
  • 暖岛暖岛是中国大陆一家提供设计师产品折扣闪购的B2C购物网站,于2011年12月由美籍华人郭哲琳在北京创建,大部分销售产品均来自中国本土设计师品牌。2013年9月起,暖岛网重新调整团队