const void *p;
void *p2;
p = xxx;
p2 = (void*)p; ←ココ。
明示的にキャストしているから問題ないような気もするのだが、warningは出てしまう。
一度longにキャストするという手もある。
p2 = (void*)(long)p;
しかしこれだと、「ポインタのサイズとlongのサイズは同じなのか?」問題があり、スッキリしない。
以下のようにunionを使うと、コンパイラをだまらせる事ができ、しかもスッキリと問題が解決する。
union {
void *vp;
const void *cvp;
} u;
u.cvp = p;
p2 = u.vp;
0 件のコメント:
コメントを投稿