0
'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);
}
가 감사합니다 싹둑.
무엇을하려고합니까? 왜 당신이'정적'을 원하고이 경우에 그것이 무엇을 의미하는지 알고 있습니까? –
'정적'으로 선언 된 변수는 데이터 세그먼트에 저장되므로 컨텍스트 스위치간에 값이 유지된다는 것을 알고 있었지만 정적 저장소가있는 개체는 @meyer가 아래에서 지적한, 상수 표현식으로 또는 C에서 상수 표현식을 포함하는 집합 이니셜 라이저로 초기화 될 수 있습니다. 나는 이것을 내가 어딘가에서 읽었는지 확인하려고 노력했다. – Amit