【发布时间】:2013-03-06 07:32:09
【问题描述】:
'C' 似乎允许在函数内初始化结构的成员,只要该结构的存储类不是“静态”,尝试这样做会返回以下编译错误:
错误:初始化元素不是常量
代码片段
typedef struct data {
int age;
char *name;
} data_t;
void foo(data_t student)
{
//data_t s1 = student; <--- works
static data_t s1 = student; <--- throws error
printf("%s: s1.age: %d, s1.name: %s\n",__FUNCTION__,s1.age, s1.name);
}
感谢,如果您提出一些见解。
【问题讨论】:
-
你想做什么?为什么你想要
static,你知道在这种情况下它是什么意思吗? -
我知道声明为“静态”的变量将存储在数据段中,因此,它们将在上下文切换中保留其值,但我不知道这样一个事实“必须使用常量表达式或包含 C 中常量表达式的聚合初始化程序来初始化具有静态存储的对象。”,@meyumer 在下面指出。我正在尝试这样做以确认我在某处读到的内容。
标签: c data-structures struct