• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンパイルエラー invalid operands to binary)

コンパイルエラー!入力文字列をBASE64デコードする関数の作成でエラーが発生しています

このQ&Aのポイント
  • 質問者は入力文字列をBASE64デコードする関数を作成しようとしていますが、L20〜L23の行でコンパイルエラーが発生しています。
  • 質問者はコンパイルエラーを解決するために試行錯誤していますが、エラーが取れません。
  • 質問者はRed Hatのgccを使用してコンパイルしており、関数の引数や戻り値についても説明しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

手元にgccが無いので、Windowsのbcc32でコンパイルしてみたところ、 エラーが出ずに通ってしまいました。 だから自信がないのですが…。 a[0] = strchr(b64, p[0]) - b64; を a[0] = strchr(b64, p[0]) - b64[0]; に変えてみたらどうでしょう。 "invalid operands to binary" は、たぶん、マイナスの両側で型が違っていることを 表しているのではないでしょうか。(←これも自信なし) strchr()が返すのはchar *型ですが、 b64の型は、charの配列型です。 型が違うので、コンパイラが不正と判断したのかもしれません。 とするとbcc32でなぜ通ったかが問題になるのですが…。 C言語規格でも、ポインタ同士の引き算のところは ややこしくなっています。 規格解釈の違いがあるのかもしれません。

noname#11716
質問者

お礼

おお~!! すばらしい。ご指摘どおりでした。 出力結果も問題ないようです。 二項演算の判断基準がコンパイラによって微妙にちがうようですね。 本当にありがとうございました。

関連するQ&A