代码之家  ›  专栏  ›  技术社区  ›  FWishbringer

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

  •  0
  • FWishbringer  · 技术社区  · 14 年前

    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不允许指针偏移的通常警告应该是没有意义的,因为整个项目是在extern“C”下构建的。

    1 回复  |  直到 14 年前
        1
  •  2
  •   nothrow    14 年前

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