移植问题:VC ++中带偏移的指针

时间:2010-09-17 06:35:07

标签: porting offset void-pointers

好的,这在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);

作为一个void指针,VC ++不想偏移指针。 CPP不允许指针偏移的常见警告应该没有实际意义,因为整个项目是在extern“C”下构建的。

现在,这只是许多功能中的一个,找到答案将允许它们全部修复。我真的不想从头开始重写库项目,我不想在MinGW下构建。必须要有一种方法可以做到这一点,我很遗憾,而不是在谷歌找到。

1 个答案:

答案 0 :(得分:2)

好吧,你不能用void *做指针算术,这在GCC下编译是荒谬的。试试memcpy(s, ((char*)offset)+2,*len);