0

構造体を含むunsignedcharポインターがあります。次に、次のことを実行します。

unsigned char *buffer ;

//code to fill the buffer with the relavent information.

int len = ntohs((record_t*)buffer->len);

ここで、record_t構造にはlenというフィールドが含まれています。これを行うことができず、エラーが発生します。

error: request for member ‘len’ in something not a structure or union.

私はここで何を間違っているのですか?

4

4 に答える 4

5

最終結果がにキャストされているかのように解析されているため、をとることはCできません。試すbuffer->lenbuffer->lenrecord_t *

((record_t *)buffer)->len
于 2011-10-02T23:05:00.093 に答える
3

試す((record_t*)buffer)->len

やりたいことがaにキャストされ、その値を取得するbuffer->lenときに、にキャストします。record_t*,bufferrecord_tlen

于 2011-10-02T23:05:24.570 に答える
3

正しいことをしていると確信している場合(これは非常にハックに見えますが)、演算子の優先順位を正しく取得する必要があります。

ntohs( ((record_t*)buffer)->len );
于 2011-10-02T23:05:43.853 に答える
2

->の優先順位はキャストよりも高くなります。かっこを適切に追加します。

于 2011-10-02T23:05:53.747 に答える