ZHCUAQ1F july 2015 – april 2023
编译器识别其定义仅包含对另一个函数的调用的函数。如果这两个函数具有相同的签名(相同的返回值以及相同数量、相同类型且顺序相同的参数),则编译器可以使调用函数成为被调用函数的别名。
例如,考虑以下情况:
int bbb(int arg1, char *arg2);
int aaa(int n, char *str)
{
return bbb(n, str);
}
在本示例中,编译器使 aaa 成为 bbb 的别名,因此在链接时,对函数aaa 的所有调用都应重定向到 bbb。如果链接器可以成功地将所有引用重定向到aaa,则可以删除函数 aaa 的主体,并将符号 aaa 定义在与 bbb 相同的地址处。
有关使用 GCC 函数属性语法来声明函数别名的信息,请参阅节 7.14.2。