static int write_stream(const void *buffer, size_t size, void *app_key)
{
char *stream = (char *)app_key;
return 0;
}
为什么指针转换 不会导致将 (size_t size) 个字节从缓冲区复制到 由 app_key 定义的流?
谢谢
编辑:我将此函数作为另一个函数的参数调用以使用回调:
static int write_stream(const void *buffer, size_t size, void *app_key)
{
char *stream = (char *)app_key;
return 0;
}
int print_to_2buf(char *ostream, struct asn_TYPE_descriptor_s *td, void *struct_ptr)
{
asn_enc_rval_t er; /* Encoder return value */
// write_stream is called as argument
er = xer_encode
(
td,
struct_ptr,
XER_F_BASIC,
/* BASIC-XER or CANONICAL-XER */ write_stream,
ostream
);
return (er.encoded == -1) ? -1 : 0;
}
最佳答案
您所做的只是创建了一个指向 char 的指针,该指针与您收到的指向 void 的指针具有相同的地址。您没有执行任何操作来将字节从 app_key
复制到 buffer
,因此不会复制任何内容。除非我误解了这个问题,否则您应该只使用 memcpy
或 memmove
。
关于c - C 中的指针转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469984/