2017-07-21 13 views
-1

MSBバイトのビットを反転させる2つのバイト変数があります。私はエラー競合の種類を取得2バイトロング変数のバイトを逆転

uint16_t reverseByte(uint16_t b){ 

    uint16_t b0 ; 

    uint16_t b1 ; 
    uint8_t revb; 
    uint8_t retb ; 
    b0 = b & 0x00FF; 
    b1 = b & 0xFF00; 
    revb = b1 >> 8; 
    retb = reverse_bits(revb); 
    b1 = retb; 
    b1 = b1 << 8; 

    return (b1 + b0); 
} 

uint8_t reverse_bits(uint8_t a){ 

    return ((a & 0x1) << 7) | ((a & 0x2) << 5) | 
      ((a & 0x4) << 3) | ((a & 0x8) << 1) | 
      ((a & 0x10) >> 1) | ((a & 0x20) >> 3) | 
      ((a & 0x40) >> 5) | ((a & 0x80) >> 7); 
} 

は、私は2番目のバイトを、私の変数を受け取り、逆に、この機能を書いた:

私はバイトを逆にこの機能を使用していますreverseByteは関数の最初の行にあります。

どうすれば修正できますか?私はコードがエレガントではないことを知っています。ただの修正が必要です。

ありがとうございました!

+1

直接関係はありませんが、初期化する前に 'revb'を使用しています。 –

+0

そして、どのラインで__exactly__でエラーが発生しますか?これを読んでください:[mcve]。 –

+0

関数を使用した後で関数を宣言していますか? –

答えて

0

問題は関数の宣言にありました。私はそれを宣言する前に、少なくとも私の場合はそれを使用しました。

私はあまりにも、警告のヒントについて

感謝を取り除くために、ローカル変数を初期化します。私は投票を理解していない。

+1

質問には十分な情報がなかったため、下降(私からのものではない)の可能性があります。 –