- ベストアンサー
C言語のコンパイル後のエラ-
UNIX windows98でC言語をプログラムしました。 #include<stdio.h> void main() { int val; val=5; printf("今、変数の中身は、 %dです¥n”, val); val=val+1; printf(”今、変数の中身は、 %dです¥n", val); val=val++; printf("今、変数の中身は、 %dです¥n”, val); } をファイル名 aaaとして gcc aaa.c でコンパイルしたところ、 aaa.c: In function 'main': aaa.c:5:warning: return type of 'main' is not 'int' とエラ-が現れます。 return(o);を最後に追加するのでしょうか。もし、そうならば、どこに追加する のか、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
標準のCでは、main は int型の関数であると定められています。 main が返す値が、そのプログラム自身が返す値として使えるよう にするためです。 Cのテキストのいくつかは、main を void で宣言したり、教師もそ れに沿ってそのまま教えてしまうことがありますが、正確には誤り です。コンパイル時の warning (エラーではない)はそれを警告 しています。warning は場合によっては無視しても正しく動きます が、それが原因で動かないこともあるので、極力修正しましょう。 結論は、main を int と宣言し、最後は 0 を return しておきましょう。 ちなみに return 文は、後に式が続くだけなので、return (0); の ようにしなくても、return 0; で十分です。
その他の回答 (2)
- coolguys
- ベストアンサー率18% (351/1917)
戻り値が設定されていないというワーニングですね。 void型は戻り値がないわけではないので、 書いておくのが妥当です。 やっぱり、コンパイルかけたときに エラーもワーニングもないと気分がいいじゃないですか。
お礼
お答えして頂き、有難うございます。
- hero1000
- ベストアンサー率29% (114/390)
エラーではなくワーニングですから、そのままにしておいても特に問題は ありませんが一応・・・。 このワーニングは「main関数の戻り値型がintではない」というものです。 main関数は本来、プログラムが正常に終わったかどうかをint型で返す事に なっているため、boboboboさんの「void main()」という記述が引っかかっ てしまったわけです。 ですから「void main()」を「int main()」に直し、最後の「}」の直前の 行に「return(0);」を書けばワーニングはなくなるはずです。
お礼
お答え有難うございます。早速、アドバイス通りに書き換えると、 コンパイルは上手くできました。
お礼
お答えありがとうございます。 コンパイルは成功しました。