2017-06-08 5 views
-1
void insert(size_t node, queue_t* queue) { 
    *queue->count++; 
    queue->elements[++(*queue->rear)] = node; 
} 
void remve(queue_t* queue) { 
    *queue->front++; 
    *queue->count--; 
} 

私はキューに追加したいノードとヘルパー関数に渡したいノードを渡します。しかし、インクリメントを含むすべての行は、 "表現結果未使用"エラーをスローします。このエラーが発生していないヘルパー関数でこのキューの操作を実行したいと思います。カウンタをインクリメントするときに式の結果が使用されない

+1

[編集]あなたの質問に戻り、queue_t' 'の定義を追加しているコンパイラは何も教えてくれないためにvoidにキャストしてみます。 – user694733

+1

なぜ 'queue-> count 'がポインタですか? –

答えて

2

*queue->front++; 

ような発現が原因operator precedence

*(queue->front++) ; 

として解析され得るので、(間接参照演算子を適用することによって得られる)最終的な結果は、未使用あります。それはコンパイラが不平を言っていることであり、私の感情は正解です。

はおそらく、あなたが望むのは、実際に*(queue->count++)を意味による演算子の優先順位に

 (*(queue->front))++ ; 
0

声明*queue->count++であり、このコードは異なるエラーメッセージを与えるものではありません私はなぜだろうか。 countfrontなどは整数値であると仮定します。したがって、*queue->countは積分値を逆参照します。これは、ポインタのみを参照解除できるため許可されていません。

実際にお望みのものはqueue->count++と思います。

0

(void)*queue->front++; 
関連する問題