数式の夢とコンピュータの現実 中村仁也

数学とコンピュータで夢を追い続けてここまで来てしまった人のブログ。

2009年07月26日

UTF8のソースコードをgccとVCで共有すること

そもそも私はコンソールプログラムしか書かないので、VisualStudioを使う本質的な意味はないのですが、単にIntellisenseを使いたくてVSを使っています。本格的にコードを作っているときなどは、Intellisenseが無いと頭がこんがらがって辛い。さらに、日本語を処理するプログラムも書かないので、日本語部分はコメントのみ。しかし、このコメントを英語で書いたりするとすぐ自分で自分のコードがわからなくなってしまうので、やはりここは日本語で書きたい。VSの環境だけならば、なにも考えずに(文字コードのことなど考えずに)すむのですが・・・。

しかし、私の場合そのコードを実行するのは殆どLinux上だったりするので、バグ取りとか細かい修正はLinux上で行います。そのときに使うのは主にvi(実際はvim)。で、viは漢字コードの違いを吸収してくれるので、SJISでもUTF8でも編集できるのですが、同じくらいよく使うコマンドにlessがありまして、こちらはUTF8でないと表示してくれません。lv等を使えば良いのですが、データファイルなどはUTF8で統一しつつあるので、この際ソースコードもUTF8にしよう!と思ったら嵌りました。

同じように嵌っている人が沢山いらっしゃいまして、「UTF8 visual studio」などで検索すると、BOMありUTF8ならばVSで使えるとのことで、早速変換してVSでコンパイルが通ることを確認し、Linuxに持って行ったら、gccでコンパイルが通らない。実はこちらも過去の遺産があって、「gcc UTF8」などで検索すれば、gccではBOM無しUTF8ならばOKとのこと。

BOMの有無でバッティングしているので、どうすればよいか。これまた「UTF8 gcc visual studio」等で検索すると答えが見つかりまして、本当にgoogleは(というより、記事を挙げてくれた皆様)何でも教えてくれます。ありがたいことです。

結論としては、

  • 漢字コードはBOM無しUTF8
  • 改行コードはCR+LF
  • VSでは文字コードを判別できない旨のワーニングが出るが、無視。(VSは文字コードをBOMで判断しているから、とのことらしい。目障りならばpragmaでwarningを消せばよい。)

これで、gccでもVSでもコンパイルできる(はず・・・実際は私はgccではなくg++で確認しましたが、たぶん大丈夫ではないかと)。

--追記--
warningを消すのはソースコードにpragmaを入れるよりも、VSの方でコンパイル時のオプションとしてたてる方がいいですね。VSで、プロジェクトのプロパティに「構成プロパティ」→「C/C++」→「詳細」→「指定の警告を無効にする」というのがあるので、ここで4819を追加すればOKです。
posted by jinya at 01:07| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/124270631
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック