移植問題:VC ++でオフセットを備えたポインター
-
03-10-2019 - |
質問
OK、これは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がポインターオフセットを許可しないという通常の警告は、プロジェクト全体がExtern "c"の下で構築されているため、否定する必要があります。
現在、これは多くの関数のみであり、これに対する答えを見つけると、それらがすべて修正されることができます。私は本当に図書館プロジェクトをゼロから書き直す必要がないことを本当に好むでしょう、そして私はMingwの下で構築したくありません。これを行うには、Googleで見つからないこれを行う方法が必要です。
解決
まあ、あなたはvoid*でポインター算術を行うことはできません、これがGCCの下でコンパイルされるのはばかげています。試す memcpy(s, ((char*)offset)+2,*len);
所属していません StackOverflow