如何使用GCC编译具有文本属性的内联C函数?
我有一个如何使用GCC编译具有文本属性的内联C函数?,c,function,gcc,compiled,inline-functions,C,Function,Gcc,Compiled,Inline Functions,我有一个inline函数,如下所示: inline void func_1 (int a) { if(a==1) { other_func1(); } else { other_func2(); } } int main() { func1(1); func1(42); return 0; } 我主要是这样用的: inline void func_1 (int a) { if(a==1)
inline
函数,如下所示:
inline void func_1 (int a)
{
if(a==1)
{
other_func1();
}
else
{
other_func2();
}
}
int main()
{
func1(1);
func1(42);
return 0;
}
我主要是这样用的:
inline void func_1 (int a)
{
if(a==1)
{
other_func1();
}
else
{
other_func2();
}
}
int main()
{
func1(1);
func1(42);
return 0;
}
我使用GCC,我认为编译后的代码是这样的(在“源代码级别”):
这是真的还是我错了?是的,一般来说,当gcc可以在编译时计算分支时,它将优化内联函数中的死代码。我使用这个构造很多,允许为不同的用例生成优化代码——有点像C++中的模板实例化。如果你不确定编译器是什么生成的,你可以总是使用<代码> -S < /C> >(也许是代码> -FVBBOSE ASM<代码>,以更好的可读性)并检查生成的程序集。对于不同的编译器选项和优化级别,结果可能不同。