【发布时间】:2011-11-17 02:03:18
【问题描述】:
#include <stdio.h>
static void test()
{
printf("is this function considered for inline?");
}
int main()
{
test(); // definition does not have inline keyword. But declaration at the bottom (which is never used) has a inline keyword.
}
inline static void test(); // definition WITH inline keyword
编译器是否会将test() 视为附加了inline 关键字?
编辑:对不起,我的意思是在最后的声明中有一个内联关键字!
【问题讨论】:
-
你编译时是否开启了优化?你的示例代码中的最后一行是什么 - 甚至不会编译
-
我认为不可能知道,也许是为了拆卸它。你需要它是有原因的,还是只是出于好奇?只是出于好奇。
-
很抱歉,我的示例代码中有一个巨大的错误。我的意思是在声明的末尾有一个 inline 关键字!
-
那么,是不是说使用 inline 关键字连构建内核都没用?
-
@KerrekSB 我只是在谈论优化目的,而不是
inline这个词的其他功能,例如模板和 ODR。我的意思是编译器可能已经非常清楚它想要内联的内容,并且为了内联它们而没有过多考虑inline声明的函数。有了这个澄清,我说的还是不正确的吗?
标签: c gcc inline declaration