vine-users ML アーカイブ



[vine-users:055265] Re: emacs で C 言語をやるには ?

  • From: Hiroshi Futami <futami@xxxxxxxxxxxx>
  • Subject: [vine-users:055265] Re: emacs で C 言語をやるには ?
  • Date: Fri, 08 Nov 2002 06:23:07 +0900 (JST)
ふたみなのです。

# 日下部陽一著「作ってわかる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 ではないですから、厳密さを要求するもんじゃないと思います。

> # 自分の意志で踊るなら全然問題ないでは?

 御意。

-- ふ