구조체 초기화 멤버 접근방식
글쓴이: 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에서나 지원하는군요.
댓글 달기