- ベストアンサー
cygwinのgccで正常にコンパイルできない
- cygwinのgccで正常にコンパイルできない問題が発生しています
- コマンドラインのコンパイルエラーが発生し、不明なエスケープシーケンスが警告されています
- 正常にコンパイルするためには、エスケープシーケンスの修正が必要です
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
補足です。エディタはvimって書いてありましたね。 でしたら、次のように打ってから保存してください。 行頭の「:」からです。 :set fileencoding=cp932 うまく動かないようなら、CygwinのSetupでlibiconvがインストールされてるか確認してみてください
その他の回答 (6)
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
test.c:10:9: warning: unknown escape sequence: '\033' って、全角スペースで段落ち記述していませんか? ソースの空白は、半角スペースか tabでなければなりませんよ。
補足
返事が遅れて申し訳ありません。 段落ち記述はありませんでした。
- kmee
- ベストアンサー率55% (1857/3366)
どっかに制御コードが入った、などは、テキストを見ただけでは見つけにくと思います。 そういうときは、バイナリとしてどうなってるかをダンプするとわかりやすいです。 #2さんの言う通り、Cygwin(やその他unix系)ではodというコマンドを使います。 -c オプションを付けると、テキストとみなせる箇所はその文字として表示しますので、今回のようなテキストファイルのおかしい箇所を探すのに有効です。 実行方法は「od -c ファイル名」 さて、今回の場合ですが、実行結果から、\がおかしいらしいことがわかります。 で、円記号/バックスラッシュ、\033(ESC)、JとB、というキーワードでピンときたのですが....od -cでの円記号の周辺が 033 ( J \ 033 ( B こんな感じになってませんか? 文字コードには、円記号とバックスラッシュとを分けているものと、同一のコードでどちらか一方だけを使っているものがあります。 unicodeや西欧用のISO-8859-1等は前者です。 0x5cがバックスラッシュ, 0xa5が円記号です JISやShift-JISは後者で0x5cに円記号を使っています。 ASCIIは後者で0x5cにバックスラッシュを使っています。 前者を扱えるエディタでは、円記号とバックラッシュが混在したテキストを書くことができます。 では、そんなテキストを、区別のない文字コードで保存しようとしたときどうするか? 1)元の使い分けが崩れるのに目を瞑って、保存する文字コードに統一にする 円記号とバックスラッシュは共に0x5cになります。 2)元の使い分けをなるべく保存するように工夫する その方法として、円記号は「JISの0x5c」バックスラッシュは「ASCIIの0x5c」と表現する、というのがあります。 そこで、参考URLのISO-2202-JPのところを見ると ESC ( J は「以降はJISローマ字として解釈する」 ESC ( B は「以降はASCIIとして解釈する」 という意味だとわかります。つまり、円記号を円記号として保存しようとした結果だということです。 対策ですが、Shift-JISかEUCで保存する、というのが簡単だと思います。 ところで、Cygwin上のエディタ使っててそんな風になった覚えがないのですが....どんなエディタ使ってます?
- kopanda116
- ベストアンサー率37% (88/232)
printf("It is %d that you input it:\n", no); でのエラーだと思いますが、”\n”の前のコロンが問題なのでは・・・。ピリオドならば、そういうことがおきないような気がします。 それか、半角バックスラッシュ(Windowsだと使えない場合あり)(Linuxだと普通に使える、というか、こっちを使わなければならない)で書き換えてみてください。
補足
間違えてコロンにしてました。 しかしそこを直しても何も変化はありませんでした。 それと半角バックスラッシュを打とうとするとWindowsだと"\"になってしまいます。
- kopanda116
- ベストアンサー率37% (88/232)
上のプログラムを実際にコンパイルしてみましたが、特にエラーは出なかったです。ただ、そのエラー?にwarningってあると思いますが、あくまで警告なので、実行ファイルができていると思います。 lsコマンドで、a.outがあればコンパイルできているはずですから。
お礼
あ、確かにできてます。ありがとうございます。 しかし"\"にあたる部分が文字化けしているようです。 これを取ったら正常になったので、原因は"\"にあるのでしょうか。 "\"をつけてエラーが出た場合の実行結果: $ ./a Please input something:123 It is 123 that you input itJBn "\"がなぜか"JB"になってます。
- Tacosan
- ベストアンサー率23% (3656/15482)
od でがんばってさがす.
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
当該行に全角文字(空白含む)がありませんか?
補足
念のためにもう一度打ち直してみましたが同じエラーが出ました。
お礼
返事が遅れて申し訳ありません。 ありがとうございます。 おかげさまで解決しました。 vimrcの"set fileencoding"の項目をcp932にすることで解決しました。