- ベストアンサー
コンパイル時のエラー
毎度c言語の質問でお世話になっております。 ついにコンパイル方法が分かり、いろいろと オブジェクトファイルを作っていますが、 また、わからないことが出てきました。 コンパイルするとエラーになります。 このようにプログラミングすると下のようなエラーが 出てきます。 なぜなのでしょうか? 回答お願いします。 #include <stdio.h> main () { int i = 1; float f = 0.2; double d = 1.25; printf("変数i:%d f:%f d:%lf", i, f, d); return 0; } エラー内容 stray \129 in program stray @ in program
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
他の方も書かれているように、処理系は明確にしましょう。 まあ、エラーメッセージからGCCだとは思いますが... エラーの原因自体は、これも既に出ているとおり、全角スペースが含まれているからです。 あと、 > main () { これ自体は、構わないといえば構いませんが、なるべく int main(void) { としましょう。voidも必ず書いてください。 ただし、これはC90の場合の話です。 > printf("変数i:%d f:%f d:%lf", i, f, d); と、printfの書式に%lfを使うのであれば、-std=c99または-std=gnu99オプションをつけてC99を指定してください。その場合、 > main () { とした場合の動作は未定義ですので、必ず int main(void) { としてください。
その他の回答 (4)
はじめまして。 まず、こういった質問の場合はご利用の開発環境を明記されることを御願い致します。 ※開発環境により問題の把握及び対処の仕方が違ってきますので。 ■開発環境の例 【OSの名称・バージョン】 ・Windows Vista (SP[Service Pack]のバージョンも明記) ・Windows XP (SP[Service Pack]のバージョンも明記) ・Windows 98SE など... 【開発環境(開発言語)の名称・バージョン】 ・Microsoft Visual C++ 2008 (エディション名も明記) ・Microsoft Visual C++ 2005 (エディション名も明記) ・Microsoft Visual C++ 6.0 (エディション名も明記) ・Borland C++ Builder 2007 ・Borland C++ Compiler 5.5 など... 【開発アプリケーションのタイプ】 ・Windowsアプリケーション(GUIベース) ・コンソールアプリケーション(CUIベース) ・その他、使用ライブラリ(MFC、ATL、C++/CLI など)の明記など... さて本題ですが、#3さんが仰られているとおり、おそらく 『ソースコード内に全角スペースが入っている』ためのエラー だと思われます。(コンパイラが構文として認識できない文字が入っているため) ※但し、コメント内にある場合は問題ありません。 全角スペースは、SHIFT-JISの場合ですがコードで表すと 0x8140 になりこれは、 上位バイト: 0x81 = 10進で129 = '\129' 下位バイト: 0x40 = 10進で64 = '@' ですので、エラーメッセージにもその旨が表示されているのだと思います。 なお、質問者さんが貼られているソースコードをそのままコピー&ペーストで Cのソースにして、コンパイル&実行してみたところ問題なくコンパイルされ 実行もでき、下記の結果が得られました。 ※当方は「Windows 98SE+Microsoft Visual C++ 5.0」の環境でテストしました。 ■実行結果 変数i:1 f:0.200000 d:1.250000 コード自体には問題ないように思われます。 但し、#1さんも書かれていますが、 main () の記述は、 int main() とした方が良いかと思われます。
- eroermine
- ベストアンサー率18% (83/444)
全角スペースが混ざってます。 このエラーは初心者には厳しいでしょうね。 マニュアル読んでもわかりませんね。 IMEの設定は英数字スペースは半角固定にしておきましょう。
エラーについて調べてみましたか? 質問する前にまずはエラーが何を意味しているのかを調べるのが基本です。 覚えておきましょうね^^
- Tasuke22
- ベストアンサー率33% (1799/5383)
わからないけど。 int main(){ にするか、 return; にするか、かな? あまりデフォルトに頼らないで明示した方がいい と思います。コンパイラによってデフォルトが 違っていたりしたら苦労しますよ。
お礼
ありがとうございました。 全角が含まれていたのが原因だったようです。