首先,从这里:
static struct foo1 { //private struct, just for this file
int a;
};
int main (void) {
struct foo1 a = {10};
return 0;
}
问题编号1
我会收到警告:
warning: useless storage class specifier in empty declaration
};
是什么意思?为什么static
是“无用的存储类说明符”?在其他情况下(函数中的静态局部var或全局静态,我想申请结构foo1
,它将起作用)。
问题编号2
#include <stdbool.h>
static struct s_t{ //private struct (for this file only)
static bool is_there = false; // defaul (pre-defined) value for all instances
int value;
};
int main (void) {}
为什么c中所有类型为struct s_t
的变量都不能具有静态的预定义值?我只是想在多个调用中模拟与函数static local var
-> preserve值相同的功能,从这个意义上讲,我想要一个成员[[preserve每个bool is_there
类型的变量(其实例)上的值。那么为什么不可能呢?
问题编号3
而且,有人可以从中解释错误(从更一般的意义上说:struct foo1
error: expected specifier-qualifier-list before ‘static’
在这种情况下,“ int”就像您声明的结构类型,因此,如果要创建结构静态成员,请执行以下操作:
static int a = 0;
static s_t a;
只是一个结构定义,而不是一个变量。声明结构实例时,应添加static struct foo1 { ...
。我喜欢这种风格:static