日本語コメントの罠

Microchipはアメリカの会社です。アメリカの会社はみんな日本語はキライです。 なので、日本語コメントに罠を張っています。以下の文を見てください
PORTB = 0;
RB0 = 1; //PORTB全てにLEDを接続しています。
RB1 = 1; //このプログラムで
RB2 = 1; //全てのLEDを点灯させることが可能
RB3 = 1; //(許容電流の問題はわすれましょうw)
RB5 = 1;
RB6 = 1;
RB7 = 1;
一見何の問題もなさそうですが・・・
RB3に接続されたLEDだけが光りません(゜Д゜;)

じつはこれ、4行目のコメント文の最後の文字「能」のせいです。 「能」は2byte文字で、16進数で"945C"。この後半の"5C"は1byte文字で「¥」(表示によってはバックスラッシュになる)にあたる数字です。 つまり、コメントを1byte文字の目で見ると、最後が「¥」で終わっているのです!
「¥」という文字は特殊な意味をもち、コメントの最後にくると、 「コメントが次の行に引き続く」 という意味になります。 つまり、コンパイラは2byte文字にも関わらず(2byte文字の表示はできるのに・・・)「¥」を単体で認識し、 次の行をコメントアウトしてしまいます。 つまり、5行目はなかったことになります。 当然、コンパイルエラーにはならないので、これは 非常に気付きにくいバグを生みます。 PICC-Pro Lite, C18, C30全てにおいてこの現象が起こります。 「能」の他に「噂」、「欺」、「表」、「十」、「貼」、「暴」などいろんな文字が1byte文字の目でみたとき「¥」で終わります。

この問題を防ぐ一番確実な方法は、「日本語を一切使わない」ことです。 でも日本人に日本語を使うなというのは無理な相談です。 なので、もう一つの方法は、日本語コメントには「//〜」という記法をつかわず、「/* 〜 */」という記法を使うということです。

え? お前はサイト上でいつも「//〜」という記法で日本語コメント入れてるじゃないかって?
追々 修正していきます^^;

Top