**元ネタ [#wfadc8e5] プログラミング初心者スレ・Part1~ http://yutori.2ch.net/test/read.cgi/news4vip/1195645613/~ 2 :以下、名無しにかわりましてVIPがお送りします。:2007/11/21(水) 20:50:08.21 ID:cmLDyUZr0 基本形 #include<stdio.h> void main() { return 0; } せっかくだから何が悪いのかもちゃんと書きなさいよ>< **C言語 [#mbd3e531] という訳で、元ネタで示された基本形の悪いと考えられるところを突っ込む。~ ちなみに、元ネタは以下のもの。 #include<stdio.h> void main() { return 0; } 一見どこにでもあるようなスタイルに見えるが、いくつかの真似するべきでない過ちを含んでいる。すなわち -main関数がvoid型になっている -returnが値を返している -使ってもいないライブラリを読み込んでいる。 というものだ。 最初の、main関数がvoid型になっているのは、非常によくみるコードだ。~ けれども、ANSIではmain関数はint型で定義するよう定められている。~ 標準に従うべきか?という議論はあるだろうけれども、俺様オンリーソースでない限り、標準に従っておくのが無難だ。~ スレでは標準にこだわる標準厨が沸くことがあるが、 厳密に標準に準拠する必要はないと筆者は考えているので、 「可能な限り」標準に従えるよう、努力すれば十分だろう。~ それを差し引いても、voidなmain関数はよくない書き方だといえる。~ ちなみに、大学の講義で使われる教科書や、古いタイプの教授はmainをvoidで書きたがる傾向にあるので、注意が必要だ。~ さらにいえば、voidすら書かない古いタイプのものある"rogue"などがそうだ。 次のreturnが値を返しているという点だが、 これは「mainがvoid型なのに、値を返すのはおかしい」という意味である。~ もしmainがint型なら、値を返すのもおかしくはない。~ voidのreturnで返された値は、処理系によっては無視されるだろうが、 厳密には正しくないので、returnだけにしておくか、そのまま`}`に落としてしまって、 voidであることを読み手に理解させたほうが良いだろう。~ これらを踏まえて書くと、先の基本形は #include<stdio.h> int main() { return 0; } となる。~ 今回はmainをint型に直したので、returnが値を返していてもおかしくなくなった。~ きちんとした土台の上に家を建てることが、丈夫な家への近道なのである。 さらに言えば、1行目の #include<stdio.h> これも不要といえる。いわゆる"おまじない"とされるものであるが、 実際これは、画面に文字を表示する等(printf)の便利なライブラリを読み込んでいるに過ぎない。 だが、じっさいのプログラムは何もしていないのでこのライブラリ"stdio.h"はまったく利用されていない ことになる。~ 最終的には以下のように添削されよう。 int main() { return 0; }