ANSI C struct의 선언과 초기화를 따로 하려면?
조회수 2438회
이렇게 struct의 선언과 초기화를 각각 다른곳에서 하려면 어떻게 해야 되나요?
예를 들면 이런 코드에서
typedef struct MY_TYPE {
boolean flag;
short int value;
double stuff;
} MY_TYPE;
void function(void) {
MY_TYPE a;
...
a = { true, 15, 0.123 } //이런 식으로
}
ANSI C(C89, C90, C99, C11 등)에서 MY_TYPE안에 멤버 변수를 초기화하려면요?
선언이랑 초기화랑 따로 하려면
a.flag = true;
a.values = 15;
이런식으로 일일이 다 지정해주는 수 밖에 없나요?
1 답변
-
ANSI C99에서는
MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };
같이 쓸 수 있고, 지정하지 않은 변수는 0으로 초기화됩니다.이렇게 쓰는 것을 designated initializer라고 합니다.
더 자세한 건 Designated Initializers를 참고해주세요.
댓글 입력