gcc, msvc와 구조체 초기화 차이....
글쓴이: kkchlove / 작성시간: 금, 2009/01/02 - 2:33오후
#define SAMPLE_FMT_NB 5; enum SampleFormat { SAMPLE_FMT_NONE = -1, SAMPLE_FMT_U8, ///< unsigned 8 bits SAMPLE_FMT_S16, ///< signed 16 bits SAMPLE_FMT_S32, ///< signed 32 bits SAMPLE_FMT_FLT, ///< float SAMPLE_FMT_DBL, ///< double SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if dynamically linking to libavcodec }; /*typedef struct SampleFmtInfo { const char *name; int bits; } SampleFmtInfo;*/ /*static const SampleFmtInfo sample_fmt_info[SAMPLE_FMT_NB] = { [SAMPLE_FMT_U8] = { .name = "u8", .bits = 8 }, [SAMPLE_FMT_S16] = { .name = "s16", .bits = 16 }, [SAMPLE_FMT_S32] = { .name = "s32", .bits = 32 }, [SAMPLE_FMT_FLT] = { .name = "flt", .bits = 32 }, [SAMPLE_FMT_DBL] = { .name = "dbl", .bits = 64 }, };*/
안녕하세요? 위와 같이 구조체를 초기화 해도 gcc에서는 컴파일이 잘 되는데... Visual Studio에서는 잘 안되네요...
어떻게 하면 잘 될까요?
문법이 달라도 너무 다름... ㅜㅜ
Forums:
컴파일 에러라도
컴파일 에러라도 올려주세요.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
Visual C가 C99 표준을 지원하지 않아서 그렇습니다.
최신 버전의 Visual C가 아니라면 ANSI C 규칙대로 초기화 부분을
형식 대신
형식으로 바꿔주는 것이 좋을 듯 합니다. (물론 enum에 선언된 순서대로 해 주어야 최종 프로그램이 오동작하지 않습니다)
그리고
#define SAMPLE_FMT_NB 5;
부분은 빼주어야 gcc에서도 정상적으로 컴파일 될 겁니다. (선언도 잘못된 데다 SAMPLE_FMT_NB는 enum에 의해 선언되기까지 합니다)
p.s [ ] 기호 쓰기 힘들군요. 몇번 수정했습니다 -_-a
댓글 달기