以下列方式定义变量时:
static register int a1 = 0;
我们得到错误:
error: multiple storage classes in declaration specifiers
这个错误有什么根本原因吗?为什么变量既不能存储在寄存器中,也只能在启动/第一次调用时初始化?可以将寄存器存储类附加到全局变量.< - 编辑:不是真的
该标准不允许在声明中使用多个存储类说明符.
从C99标准:
6.7.1存储类说明符
1个存储类说明符:
typedef extern static auto register2最多可以在声明中的声明说明符中给出一个存储类说明符.
如果编译器忠实地实现了您想要的内容,那么它将占用程序长度的CPU寄存器.这很难实用.
请记住,这register
只是建议.