1、__attribute__((alias)) 变量属性允许你为一个变量指定多个别名
2、语法
type newname __attribute__((alias("oldname")));
oldname:需要另起别名的类型
newname:另起的别名
3、别名和原始名必须具有相同的类型
4、不能在块范围内指定别名。编译器会忽略附加到局部变量定义上的别名属性,并将变量定义视为普通的局部定义。
5、在输出对象文件中,编译器使用对原始变量名的引用替换别名引用,并在原始名称旁边发出别名。例如:
int oldname = 1;
extern int newname __attribute__((alias("oldname")));
编译输出文件
LDR r1,[r0,#0] ; oldname
...
oldname
newname
DCD 0x00000001
如果原始变量定义为 static 静态变量,而别名定义为extern,则编译器将原始变量更改为external变量。
6、函数名称也可以使用这个属性扩展
7、示例
#include <stdio.h>
int oldname = 1;
extern int newname __attribute__((alias("oldname"))); // declaration
int main(int argc, char *argv[])
{
printf("newname = %d\n", newname); // prints 1
}
/** 程序输出结果
newname = 1
*/