2016-05-27 10 views
0

一般的なデータを読み書きするには、LinuxのC言語で関数を記述する必要があります。GCC警告:void型のポインタ算術*

大きなデータを読み取る(または書き込む)ことができるので、読み込んだバイト数を使ってしばらくしました。 次の呼び出しでは、例えば、元のポインタ+読み込んだバイト数+を読み込みます。

membox.c: In function ‘myRW’: 
membox.c:301:22: warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith] 
w = read(fd, data + (s*type) , len - s); 
       ^
membox.c:308:23: warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith] 
w = write(fd, data + (s*type) , len - s); 

は、私はこれを行うことができます。しかし、私は私がvoid *を使用しますが、GCCは言うタイプを知りませんか?私はこの警告を無視すべきですか?

+0

'char *'はおそらく算術演算に必要なポインタ型です。 – Flexo

+1

OT:これらの 'long int'sは' size_t'sでなければなりません。 – alk

+0

OT^2:慣例上、エラー「-1」が返されます。 – alk

答えて

3

void *char *にキャストします。そのようにして、ポインタ演算を行うための基本的なサイズの型があります。

(char*)data + (s*type) 
関連する問題