52
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コメントが原因でエラーになる話

Last updated at Posted at 2022-10-11

動機

新人の頃、C言語でコメントがエラーの原因となったことがありました。
珍しい体験だと思うので、思い出しながら記事にしました。

環境

あまり覚えてません。。。

  • c言語(バージョン不明)
  • gcc系のコンパイラ(バージョン不明)
     →おそらく、shift-jisに対応してないことが原因です。

結論

コメントの最後の文字について、
バイナリコードとして見た場合、
「¥」と同じなら、コメントの次の行もコメントになってしまいます。

下記の例だと、
「能」のバイナリコード末尾部分が「¥」と同じバイナリコードになり、「能」の次の行もコメントとして解釈されてしまいます。
そのため、出力される結果は0となります。

test.c
// 初期化
a=0;
b=0;

// aは100未満の値を入れることが可能
a=a+99;         //この行もコメントとして解釈される

print(a+b);     //ここでは0が出力される

対策

  • 問題となる文字を避ける
    →「能」バイナリコードの末尾が「¥」と同じになる文字に注意する
  • 「/**/」でコメントする
    →「/* ほげほげすることが可能 */」とすると、末尾が「*/」になり本エラーを避けることができます。

追記
↓コメントからのご意見を反映します。

  • 文字コードをUTF8なとに変更する。
  • コンパイルオプションで文字コードを指定する。
     →ただし、include先の文字コードもオプションと同じ文字コードで解釈されるため、注意が必要。

最後に

数年前に出くわした現象であり、
同じような環境でも発生しない可能性があります。
同じ状況で困っている人の助けになると嬉しいです。

文章が読みにくいなど指摘事項がありましたら、遠慮なくコメントしてください🙇‍♀️

52
16
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?