
gcc で linux のソフトの開発をやっております。いろいろな都合でWindowsとソースの共通化をするため日本語はシフトjisを使っているのですが、たとえば"ソ"などで\をつけないといけません。しかし、これだと今度はWindowsで通らなくなります。私はゲーム機の開発もやってるのですが、私が使っているゲーム機用のgccは、なにかパッチがあててあるのか、LANG=C-SJIS と環境変数を定義しておけばシフトjisを通してくれます。linuxの普通のgccでも同じようなことをできるようにするパッチはないでしょうか?
No.1ベストアンサー
- 回答日時:
GCCのバージョンが3.4以上であれば、次のオプションを付けることでシフトJISが使えるようになります。
-finput-charset=cp932 -fexec-charset=cp932
見ての通り、-finput-charsetがソース文字集合を、-fexec-charsetが実行文字集合を指定するオプションです。これを使えば、ソース文字集合と実行文字集合が違っても大丈夫です。
ちなみに、cp932ではなくSHIFT_JISとするとまともに動作しませんのでご注意ください。
なるほど!! できました。ありがとうございました。
ただ、仕事で使っているいくつかのサーバーで gcc -v やってみたら、3.4.x はそんなに多くはなく、ちょっと古いのは 3.2.x で、もっと古いのは 2.9.x でした。3.2.x ではコンパイルエラーになってしまいました。gccをバージョンアップとなりますと、関連するライブラリ関係も全部入れ替え、サーバーで動いている実行ファイルも configuer からやり直しですか? あ、これはよく考えると他で聞いたほうがいいみたいですね。
No.2
- 回答日時:
GCC 3.3.x以前のバージョンで使える多バイト文字処理用のパッチもあるにはありますが、それを使うにはGCCのビルドからやり直さなければなりません。
外付けの対応方法もいくつかありますが、ここではMCPPを紹介しておきます。これは、プリプロセッサだけを摩り替える方法です。
このプリプロセッサはGCC 3.4.x以降の多バイト文字対応を諦めた形跡がありますが、逆に3.3.x以前であれば使えると思います。
ただし、プリプロセッサを摩り替えることになるので、GCCの臭い所を突いたコーディングをしていると、エラーになったり、誤動作する危険性もあるので十分に注意してください。
他には、実行文字集合がシフトJISでなくてもよいのであれば、Makefileの中で、いったんiconvやnkfを使ってEUC-JPに変換してから、コンパイルするというのも一つの方法かと思います。
参考URL:http://www.m17n.org/mcpp/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- マウス・キーボード 教えて! AppleのMagic Keyboard(JIS)をWindows 10で使用次第のですが 2 2022/06/01 18:07
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# gcc のコンパイラオプションについて 2 2022/12/21 17:11
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- UNIX・Linux VertualBox でのLinux Mint の活用方法について教えてください 4 2023/08/06 10:34
- その他(パソコン・スマホ・電化製品) JIS規格の変更履歴 2 2023/04/03 10:38
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- ネットワーク 通信量を見たい 3 2023/03/01 07:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
エクセルVBAではRound...
-
VBAを何回も作り直して、容量が...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
アイコンについて
-
「fatal error C1189」を回避す...
-
クリティカルエラー Expressio...
-
Makefile作成時の拡張子.oとは?
-
コンパイルエラー:ユーザ定義...
-
<math.h>があるのにsqrtが・...
-
複数ファイルに分割した時の構...
-
ヘッダーファイルがみつからない
-
VMwareのLinuxでコンパイルでき...
-
Microsoft の Visual C++ サン...
-
[c++] <pthread.h>がinclude で...
-
LoadLibraryについて
-
gccですが、コンパイルができま...
-
MO, PO, POT, ファイルの開き方...
-
DirectX9SDKが入ってるPCでDi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
Makefile作成時の拡張子.oとは?
-
外部シンボル "_main"は未解決です
-
<math.h>があるのにsqrtが・...
-
ILSpyで、デコンパイルできない。
-
クリティカルエラー Expressio...
-
【VC++6.0(MFC)】警告「LINK : ...
-
マクロ コンパイルがグレーバック
-
セミコロンについて
-
複数のサブディレクトリを一緒...
-
C言語のコンパイルができません
-
PRO*C コンパイルエラー
-
ExcelVBAで『ByRef 引数の型が...
-
コンパイルエラー:ユーザ定義...
-
プリコンパイルエラーについて
おすすめ情報