函数定义的顺序对于C中的内联是否重要
发布时间:2020-12-16 09:46:20 所属栏目:百科 来源:网络整理
导读:当一个函数调用另一个函数并且需要内联时,这两个函数的定义顺序是否重要?假设这两个定义出现在同一个翻译单元中. 我主要对C标准所说的内容感兴趣,如果有的话.但是,如果您有关于特定编译器中的内联行为的重要信息,我也会对此感兴趣.请假设没有发生链接时优化
当一个函数调用另一个函数并且需要内联时,这两个函数的定义顺序是否重要?假设这两个定义出现在同一个翻译单元中.
我主要对C标准所说的内容感兴趣,如果有的话.但是,如果您有关于特定编译器中的内联行为的重要信息,我也会对此感兴趣.请假设没有发生链接时优化(被禁用). 具体来说,根据C标准,以下两个版本是否同样可以实现内联? 第一版: inline void foo() { ... } void bar() { ... foo(); ... } 第二版: inline void foo(); void bar() { ... foo(); ... } void foo() { ... } 编辑:请注意,这个问题不是关于内联关键字在实现内联方面的有效性.我特别询问标准是否说明了与实现内联相关的函数定义的顺序. 解决方法
C标准不在此处进行任何拼版.编译器可以在任何他们认为合适的情况下自由内联或不内联.除了允许同一函数的多个定义之外,inline关键字可能没有任何效果.
大多数编译器都能够内联翻译单元可用的任何功能,无论它在源中出现的顺序如何.前向声明通常只会影响源文件中给定点的可用名称,而不会影响二进制文件的最终输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容