我有一个结构
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 初始化结构。
但我在第 210error C2059: syntax error : '{'
行error C2143: syntax error : missing ';' before '{'
我正在使用 Visual Studio 2010 进行编译。我猜 VS 不识别.coder=NULL
样式语法。我还编写了一个函数(而不是宏),在其中我像这样用 NULL 初始化结构成员。
lzma_next_coder make_null_lzma()
{
lzma_next_coder temp;
temp.coder = NULL;
//other members
return temp;
}
next = make_null_lzma();
错误现在消失了,但我遇到了运行时崩溃。我做得对吗?next 真的用 NULL 初始化吗?还是我搞砸了?
谢谢