ふたみなのです。
# 日下部陽一著「作ってわかるCプログラミング」を読んで勉強してます(^_^)
From: "OOSATO,Kazzrou" <kazz@xxxxxxxxxxxxxx>
Subject: [vine-users:055252] Re: emacs で C 言語をやるには ?
Date: Thu, 7 Nov 2002 19:06:32 +0900
> > > return 0; がないのは確かに行儀よくないですが warning レベルの話,
> >
> > 行儀の問題ではなく、これは明らかに間違いです。
>
> なにに照らして間違いなのかを言わないと....。
C の仕様書からすれば、望ましくない書き方だと思います。
http://www.denpa.org/~go/denpa/200208/from11.html
に判りやすい解説があります。Harbison & Steel の Reference Manual(5th ed)
の303頁から解説がありますが、
Standard C permits main to be defined with either zero or two parameters:
int main(void) { ... }
int main() { ... } /* also OK, but not recommended */
int main(int argc, char *argv[]) { ... }
となってます。
> 関数が値を返さなかったときのふるまいは処理系依存ですし、main 関
> 数からの返り値を期待するかどうかは操作系依存ですし。
>
> 型が省略された関数の型は (void) ではなく暗黙に int ですから、K&R
> の最初の例題は「明らかに間違い」と言わなくてはならなくなります。
同303頁から、関連する部分を抜粋すると、
If the end of body of main is reached without returning,
it is treated as if return 0; ware executed.
Prior to C99, the return type of main was often omitted,
defalting to int. This is no longer allowed.
と書いてあります。ということで、「明らかに間違い」ということではなくて
「行儀が悪い」というレベルだと思います。K&R の前半は Tutorial であって
Reference ではないですから、厳密さを要求するもんじゃないと思います。
> # 自分の意志で踊るなら全然問題ないでは?
御意。
-- ふ