0
只要结构的存储类不是'static','C'似乎允许初始化函数内的结构成员,尝试这样做会返回以下编译错误:结构初始化中的静态存储类中的错误
error: initializer element is not constant
代码剪断
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);
}
欣赏,如果你把一些见解。
你想做什么?为什么你想'静态',你知道这是什么意思? – 2013-03-06 07:34:51
我知道被声明为“静态”的变量将被存储在数据段中,因此它们将通过上下文切换保留它们的值,但我没有意识到“静态存储的对象必须用常量表达式或用C中包含常量表达式的聚合初始值设定项进行初始化“,@meyumer在下面指出。我正在试图确认我在某处阅读的内容。 – Amit 2013-03-06 09:42:04