구조체를 원소로 가지는 배열의 초기화 관련
글쓴이: superkkt / 작성시간: 금, 2005/10/14 - 3:45오후
struct code { char *c_name; int c_val; }; static struct code PriNames[] = { "panic", LOG_EMERG, "emerg", LOG_EMERG, "alert", LOG_ALERT, "crit", LOG_CRIT, "err", LOG_ERR, "error", LOG_ERR, "warn", LOG_WARNING, "warning", LOG_WARNING, "notice", LOG_NOTICE, "info", LOG_INFO, "debug", LOG_DEBUG, NULL, -1 };
위에서 PriNames[] 배열을 초기화 할때요.. 아래와 같이 해야 정상 아닌가요?
static struct code PriNames[] = { {"panic", LOG_EMERG}, {"emerg", LOG_EMERG}, {"alert", LOG_ALERT}, ..생략.. {NULL, -1} };
Forums:
둘 다 맞습니다. 아래쪽이 알아보기 쉽다는 점은 있겠지요.
둘 다 맞습니다. 아래쪽이 알아보기 쉽다는 점은 있겠지요.
둘다 정상이고 designated initialize라는 희귀한 형식이
둘다 정상이고 designated initialize라는 희귀한 형식이 결합될 수 도 있습니다.
- 죠커's blog / HanIRC:#CN
Re: 구조체를 원소로 가지는 배열의 초기화 관련
둘 다 맞긴 합니다만, 두번째처럼 하지 않으면 Warning 내는
컴파일러가 있습니다.
그리고, 두번째 방법이 더 좋은 방법입니다. 예를 들어,
아래와 같이 extra 멤버가 더 추가됐을 때,
두번째 방법은 기본적으로 extra 가 0 으로 초기화 되고,
0 이외의 값이 아닌 경우는 그냥 두면 됩니다.
하지만 첫번째 방법은 컴파일 오류가 나겠죠.
다차원 배열이든, 구조체 안에 구조체가 있든 모든 경우에서
되도록 두번째처럼 하시는 게 좋습니다.
Orion Project : http://orionids.org
댓글 달기