私は構造を持っています
typedef struct lzma_next_coder_s lzma_next_coder;
struct lzma_next_coder_s {
lzma_coder *coder;
lzma_vli id;
uintptr_t init;
lzma_code_function code;
lzma_end_function end;
lzma_check (*get_check)(const lzma_coder *coder);
lzma_ret (*memconfig)(lzma_coder *coder, uint64_t *memusage,
uint64_t *old_memlimit, uint64_t new_memlimit);
lzma_ret (*update)(lzma_coder *coder, lzma_allocator *allocator,
const lzma_filter *filters,
const lzma_filter *reversed_filters);
};
以下はマクロです。
#define LZMA_NEXT_CODER_INIT \
(lzma_next_coder){ \
.coder = NULL, \
.init = (uintptr_t)(NULL), \
.id = LZMA_VLI_UNKNOWN, \
.code = NULL, \
.end = NULL, \
.get_check = NULL, \
.memconfig = NULL, \
.update = NULL, \
}
これがコールです
lzma_next_coder *next;
next = LZMA_NEXT_CODER_INIT;
line 210
.
主な目的は、next
構造体を NULL で初期化することです。
しかし、私は210行目で取得error C2059: syntax error : '{'
していますerror C2143: syntax error : missing ';' before '{'
Visual Studio 2010 を使用してコンパイルしています。.coder=NULL
VS はスタイル構文を認識しないと思います。このように構造体メンバーを NULL で初期化する関数 (マクロの代わりに) も作成しました。
lzma_next_coder make_null_lzma()
{
lzma_next_coder temp;
temp.coder = NULL;
//other members
return temp;
}
next = make_null_lzma();
エラーはなくなりましたが、ランタイム クラッシュが発生しています。私はそれを正しくやっていますか?next は本当に NULL で初期化されていますか? それとも私はそれを台無しにしましたか?
ありがとう