当前位置:  开发笔记 > 编程语言 > 正文

为什么不能一起使用静态和寄存器存储类?

如何解决《为什么不能一起使用静态和寄存器存储类?》经验,为你挑选了2个好方法。

以下列方式定义变量时:

static register int a1 = 0;

我们得到错误:

error: multiple storage classes in declaration specifiers

这个错误有什么根本原因吗?为什么变量既不能存储在寄存器中,也只能在启动/第一次调用时初始化?可以将寄存器存储类附加到全局变量.< - 编辑:不是真的



1> R Sahu..:

该标准不允许在声明中使用多个存储类说明符.

从C99标准:

6.7.1存储类说明符

1个存储类说明符:

typedef
extern
static
auto
register

2最多可以在声明中的声明说明符中给出一个存储类说明符.


在C11中,这不再是真的,因为`_Thread_local`可以与`static`和`extern`结合使用.

2> Bathsheba..:

如果编译器忠实地实现了您想要的内容,那么它将占用程序长度的CPU寄存器.这很难实用.

请记住,这register只是建议.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有