ANSI C struct의 선언과 초기화를 따로 하려면?


이렇게 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;

이런식으로 일일이 다 지정해주는 수 밖에 없나요?

  • 2016년 01월 29일에 작성됨

조회수 203


1 답변


좋아요
0
싫어요
채택취소하기

ANSI C99에서는 MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 }; 같이 쓸 수 있고, 지정하지 않은 변수는 0으로 초기화됩니다.

이렇게 쓰는 것을 designated initializer라고 합니다.

더 자세한 건 Designated Initializers를 참고해주세요.

  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close