sdccのcharがunsignedになっててドハマり物語ラズベリーパイとPIC間でI2C通信を成立させたくて、PIC用にI2Cスレーブのスタックを、純ソフトウェア実装で書いていたのだが、スレーブとしてとりあえずの受信に成功したところで、ライブラリ化するため、コードを分割しようとしたところ、これがどうにも動かなくなってしまった。charに戻したところ、動くようになった......って、ナニそれ!?生成されたアセンブラコードに降りていくと、確かに符号付きとして数値比較しているらしきコードが見当たらない。char」でググってみたところ、charはunsignedとして扱われる旨の情報がある。1当然ながら、gccならcharはsignedだ。condition」の3値を返す関数だったので、オシャレに負数を返すように変更したことが裏目に出た。K&Rの第2版をパラパラ......「このcharが符合付きか符合なしかは機種によるが......」なんですか、そーでしたか......私が悪うござんした。ちなみに、最新版のマニュアルでは以下のようなコンパイルオプションの説明がある。unaffected.以前は、ちょうど逆のコンパイルオプションがあったようだ。charと明示的に宣言しておけば間違いはないようだ。この変更、ホントに必要だったんかなぁ。これまで書いたコードが動かなくなりそうでイヤやわ。自分が忘れないように、ここにしっかりとメモしておく。ほんっと、まったくもぅ、まったくもぅ、まったくもぅだよ、まったくもぅ。1.8.7-p374。