구조체 초기화 멤버 접근방식
글쓴이: bloody / 작성시간: 목, 2014/06/05 - 2:54오후
리눅스에서 사용되는 소스코드인데요 윈도우즈로 가져오니 에러가 나네요
아래와 같이 선언된 구조체에서
typedef struct OptionDef { const char *name; int flags; union { void *dst_ptr; int (*func_arg)(void *, const char *, const char *); size_t off; } u; const char *help; const char *argname; } OptionDef;
초기화 시킬때 아래와 같이 .fuc_arg라고 해서 멤버변수를 지정해서 초기화 시켜주고 있는데요
const OptionDef options[] = { { "vcodec", OPT_VIDEO, { .func_arg = opt_video_codec }, "force video codec ('copy' to copy stream)", "codec" }, ... };
VS2008을 사용하는데 위 .func_arg 라는 부분에서 에러가 나네요
VC++에서는 저런 문법이 없나보죠???
어떻게 해결해야 할까요?
Forums:
designated initializer라고
designated initializer라고 C++에는 없고 C는 C99이상의 표준을 지원하는 컴파일러라면 가능합니다.
MSDN 블로그(http://blogs.msdn.com/b/somasegar/archive/2013/06/28/cpp-conformance-roadmap.aspx)에서 말하길 "C99 designated initializers will be supported in VC++ 2013 RTM"라고 하니까 2008에서는 지원이 안되겠네요.
원래 VC++이 표준 지원이 매우 늦습니다. C99면 이름 그대로 99년에 나온 표준인데 2013에서나 지원하는군요.
댓글 달기