移植问题:带有VC ++偏移的指针
-
03-10-2019 - |
题
好的,这可以在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);
不隶属于 StackOverflow