【发布时间】:2020-09-19 15:21:41
【问题描述】:
我想要一个函数,它也有一个内联版本。我希望它们是相同的。
这会比手工复制更有效率吗?或者有更好的方法吗?
void inline in_function(int a) {
printf("%d", a);
}
void function(int a) {
in_function(a);
}
【问题讨论】:
-
我能问一下为什么你会以两种方式实现相同的功能吗?请注意,此时 inline 几乎是退化的 - stackoverflow.com/questions/29796264/…。
-
请注意,如果一个函数在源文件中是
static,编译器(优化器)通常会内联它(即使没有inline函数说明符)如果它认为这样做是有利的.例如,如果函数只在一个地方调用,它可能是内联的。如果它很小,它可能会被内联,即使它没有标记inline并且在很多地方都被调用。如果你为它生成一个函数指针,它就不能被内联——或者,至少,必须有一个非内联版本的函数供指针引用。在文件之间工作比较棘手——请参阅 x-refs。