gcc“没有内联”警告

时间:2014-07-05 18:55:49

标签: gcc gcc-warning

当编译器无法内联函数时,gcc' s inline __attribute__((__always_inline__))会产生警告吗?

因为VS确实http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx

If the compiler cannot inline a function declared with __forceinline, 
it generates a level 1 warning.

1 个答案:

答案 0 :(得分:2)

您需要-Winline才能收到有关非内联函数的警告。

如果你想验证这一点,你可以尝试获取内联函数的地址(这会阻止它被内联),然后你应该看到一个警告。

#include <stdio.h>

static inline __attribute__ ((always_inline)) int add(int a, int b)
{
    return a + b;
}

int main(void)
{
    printf("%d\n", add(21, 21));
    printf("%p\n", add);
    return 0;
}

修改

我一直试图用上面的代码和其他例子产生警告但没有成功 - 似乎gcc和clang的当前版本的行为可能在这个领域发生了变化。如果我无法使用生成警告的更好示例进行编码,我将删除此答案。