1

私は C が苦手で、キャストに問題があります。関連すると思われるコードの行は次のとおりです。

#define BUF 1025
char hostname[BUF];

hostname = *(char *) qpop(&queue);

そして、これは私がコンパイラから得ているエラーです:

エラー: タイプ char からタイプ 'char[1025]' に代入するときの互換性のないタイプ

関数 qpop は void* を返すことに注意してください。私の問題は、void* から char[1025] にキャストする方法だと思います。エラー メッセージから、char 型にキャストしているように見えますが、char[1025] 型にはキャストしていないようです。私はこれを試しました:

hostname = *(char[1025] *) qpop(&queue)

しかし、それもうまくいきませんでした。

誰かがこれを行う方法を理解するのを手伝ってくれますか? ありがとうございました!

4

2 に答える 2

6

配列は第一級の型ではありません。配列に割り当てることはできません。メモリ/要素を配列にコピーする必要があります。

memcpy(hostname, qpop(&queue), BUF)
于 2013-02-23T18:39:54.960 に答える
1

キャスティングの意味がありません。配列にポインタを直接割り当てることができないためです。参考までに、構文は次のとおりですhostname = (char(*)[1025]) qpop(&queue)。これを「1025文字の配列へのポインタ」と読むことができます

最良の解決策は@Cornstalksによって提供されます

于 2013-02-23T18:50:00.663 に答える