• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cygwinのgccで正常にコンパイルできない。 )

cygwinのgccで正常にコンパイルできない

このQ&Aのポイント
  • cygwinのgccで正常にコンパイルできない問題が発生しています
  • コマンドラインのコンパイルエラーが発生し、不明なエスケープシーケンスが警告されています
  • 正常にコンパイルするためには、エスケープシーケンスの修正が必要です

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.6

補足です。エディタはvimって書いてありましたね。 でしたら、次のように打ってから保存してください。 行頭の「:」からです。 :set fileencoding=cp932 うまく動かないようなら、CygwinのSetupでlibiconvがインストールされてるか確認してみてください

参考URL:
http://www.kawaz.jp/pukiwiki/?vim
nomalphard
質問者

お礼

返事が遅れて申し訳ありません。 ありがとうございます。 おかげさまで解決しました。 vimrcの"set fileencoding"の項目をcp932にすることで解決しました。

その他の回答 (6)

回答No.7

test.c:10:9: warning: unknown escape sequence: '\033' って、全角スペースで段落ち記述していませんか? ソースの空白は、半角スペースか tabでなければなりませんよ。

nomalphard
質問者

補足

返事が遅れて申し訳ありません。 段落ち記述はありませんでした。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

どっかに制御コードが入った、などは、テキストを見ただけでは見つけにくと思います。 そういうときは、バイナリとしてどうなってるかをダンプするとわかりやすいです。 #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上のエディタ使っててそんな風になった覚えがないのですが....どんなエディタ使ってます?

参考URL:
http://mikeneko.creator.club.ne.jp/~lab/kcode/encode.html
回答No.4

printf("It is %d that you input it:\n", no); でのエラーだと思いますが、”\n”の前のコロンが問題なのでは・・・。ピリオドならば、そういうことがおきないような気がします。 それか、半角バックスラッシュ(Windowsだと使えない場合あり)(Linuxだと普通に使える、というか、こっちを使わなければならない)で書き換えてみてください。

nomalphard
質問者

補足

間違えてコロンにしてました。 しかしそこを直しても何も変化はありませんでした。 それと半角バックスラッシュを打とうとするとWindowsだと"\"になってしまいます。

回答No.3

上のプログラムを実際にコンパイルしてみましたが、特にエラーは出なかったです。ただ、そのエラー?にwarningってあると思いますが、あくまで警告なので、実行ファイルができていると思います。 lsコマンドで、a.outがあればコンパイルできているはずですから。

nomalphard
質問者

お礼

あ、確かにできてます。ありがとうございます。 しかし"\"にあたる部分が文字化けしているようです。 これを取ったら正常になったので、原因は"\"にあるのでしょうか。 "\"をつけてエラーが出た場合の実行結果: $ ./a Please input something:123 It is 123 that you input itJBn "\"がなぜか"JB"になってます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

od でがんばってさがす.

回答No.1

当該行に全角文字(空白含む)がありませんか?

nomalphard
質問者

補足

念のためにもう一度打ち直してみましたが同じエラーが出ました。

関連するQ&A