(ANSI-C 89)
您好,是否可以同时声明一个变量 static 和 register ?每当我尝试这样做时,我都会收到一条错误提示:multiple storage classes in declaration specifiers
这是代码:
#include <stdio.h>
void f1(static int i);
int main()
{
static register int i;
i = 5;
f1(i);
}
void f1(static int i)
{
static int y =6;
y+=1;
printf("\n Y=%d \n",y);
}
和那个
最佳答案
register
和static
都是存储类说明符,最多只能指定一个存储类说明符。
来自 C11 标准 ISO/IEC 9899:2011:
6.7.1 Storage-class specifiers
Syntax
- storage-class-specifier:
typedef
extern
static
_Thread_local
auto
register
Constraints
- At most, one storage-class specifier may be given in the declaration specifiers in a declaration, except that
_Thread_local
may appear withstatic
orextern
.120)
120)See ‘‘future language directions’’ (6.11.5).
关于c - 声明一个同时具有寄存器和静态存储类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694979/