この記事でお話しすること
- ソースを正しく書いていてもコンパイルエラーになる原因を説明します。
- コンパイルエラーさせない方法を説明します。
今回は、私がさっきまで本気で困ったことについてTipsとして残しておきます。なお、私はCygwinを使ってコンパイルしていますので、Cygwin以外のソフトウェアでは挙動が違う可能性があります。
1. コンパイルエラーになる原因
正しく書いていてもエラーになる原因として、文字コードが挙げられます。gccやg++のデフォルトの文字コードはUTF-8です。そこにSJISなどで作られたソースコードをコンパイルさせようとすると、日本語が入ったプログラムでエラーが発生します。
実際、私もSJISでソースコードを書いていることに気付かずにコンパイラに通し、中括弧閉じ”}”をつけているにも関わらず「つけ忘れてるぞ!」と何回も言われて気が滅入っていました。路頭に迷っている方は、一度文字コードをご確認ください。
2. コンパイルエラーさせない方法
先ほど述べたように、「コンパイラとソースコードの文字コードが対応していない」ゆえに、コンパイルエラーは発生していました。ですので、これを解消させる方法は次が考えられます。
- ソースコードの文字コードを変更する
- コンパイラの文字コードを変更する
1については容易に行えます。たいてい「名前を付けて保存」をするときに文字コードが変更できるようになっているはずです。(画像はサクラエディタ。「文字コードセット」で変更できます)
2は少々面倒です。以下のサイトを参照すればわかるのですが、コンパイルオプションで文字コードを変更することができます。 MinGW gccでSJIS文字を扱う方法 - はけの徒然日記
いちいちこのオプションを設定するのは面倒ですし、かといって毎回設定しないように設定するのも面倒です。おとなしくUTF-8でソースコードを書いたほうがいいだろう、というのが私の所感です。
3. まとめ
-
コードを確認しても間違ってないのにコンパイラから言い掛かりをつけられる → コードの文字コードをいったん確認すべし
-
ソースコードの文字コードを変えるほうがいろいろ楽