如何使用 GCC 编译具有文字属性的内联 C 函数?
How to compile inline C function with literal attributes with GCC?
我有一个这样的 inline
函数:
inline void func_1 (int a)
{
if(a==1)
{
other_func1();
}
else
{
other_func2();
}
}
我在 Main 中这样使用:
int main()
{
func1(1);
func1(42);
return 0;
}
我使用 GCC,我认为编译后的代码如下所示(在“源代码级别”):
int main()
{
other_func1()
other_func2();
return 0;
}
这是真的还是我错了?
是的,一般来说,当 gcc 可以在编译时评估分支时,它会优化掉内联函数中的死代码。我经常使用这个结构来为不同的用例生成优化代码——有点像 C++ 中的模板实例化。
我有一个这样的 inline
函数:
inline void func_1 (int a)
{
if(a==1)
{
other_func1();
}
else
{
other_func2();
}
}
我在 Main 中这样使用:
int main()
{
func1(1);
func1(42);
return 0;
}
我使用 GCC,我认为编译后的代码如下所示(在“源代码级别”):
int main()
{
other_func1()
other_func2();
return 0;
}
这是真的还是我错了?
是的,一般来说,当 gcc 可以在编译时评估分支时,它会优化掉内联函数中的死代码。我经常使用这个结构来为不同的用例生成优化代码——有点像 C++ 中的模板实例化。