void* を使用していくつかの int をメモリに格納してから取得しようとしていますが、「算術で使用される型 'void *' のポインター」という警告がスローされ続けます。
void *a = new char[4];
memset(a, 0 , 4);
unsigned short d = 7;
memcpy(a, (void *)&d, 2);
d=8;
memcpy(a+2, (void *)&d, 2); //pointer of type ‘void *’ used in arithmetic
/*Retrieving*/
unsigned int *data = new unsigned int();
memcpy(data, a, 2);
cout << (unsigned int)(*data);
memcpy(data, a+2, 2); //pointer of type ‘void *’ used in arithmetic
cout << (unsigned int)(*data);
結果は期待どおりですが、これらの警告が一部のコンパイラでエラーになるのではないかと心配しています。私が気付いていないこれを行う別の方法はありますか?
これはおそらく通常のシナリオでは悪い習慣だと思いますが、問題のステートメントでは、符号なし整数を保存して 2 バイトのパケットで送信する必要があります。私が間違っている場合は修正してください。ただし、私の理解では、void* の代わりに char* を使用すると、3 桁の数字で 3 バイトが必要になります。