好的,这可以在Linux下的GCC中罚款。

char * _v3_get_msg_string(void *offset, uint16_t *len) {/*{{{*/
    char *s;
    memcpy(len, offset, 2);
    *len = ntohs(*len);
    s = malloc(*len+1);
    memset(s, 0, *len+1);
    memcpy(s, offset+2, *len);
    s[*len] = '\0';
    *len+=2;
    return s;
}/*}}}*/

但是,由于该行,我在将其移植到Windows时遇到了问题。

memcpy(s, offset+2, *len);

作为空隙指针,VC ++不想抵消指针。 CPP不允许指针偏移的通常警告应该是毫无意义的,因为整个项目都是在外部“ C”下构建的。

现在,这在许多功能中只有1个函数,找到答案将使它们都可以修复。我真的更喜欢不必从头开始重写图书馆项目,也不想在Mingw下构建。必须有一种方法来做到这一点,而我在Google中找不到。

有帮助吗?

解决方案

好吧,您不能用void*进行指针算术,这是荒谬的,因为它在GCC下进行了编译。尝试 memcpy(s, ((char*)offset)+2,*len);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top