「C言語/関数」の版間の差分

削除された内容 追加された内容
C言語で、もし、「main関数の変数アドレスをすべて共有したサブルーチン的なものの処理単位の使用を宣言したいな〜」と思っても、そのような処理単位はC言語の文法には存在しない。一見
個人的意見は不要なので除去
262 行
 
if文やfor文の{}もブロックと見なされるので、注意が必要である。<ref>ウェブページ『ロベールのC++教室 - 第68章 寿命 -』 http://www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01068.html</ref>
 
 
(※ 個人的意見: ) なので、あまり、関数内に入れ子になっているブロック内では、変数を定義しないほうが安全だろう。
 
 
=== 関数原型 ===
296 ⟶ 292行目:
}
</source>
 
 
:(※ 個人的な意見: )結局、呼び出し先の関数の具体的な定義はmain関数よりもあとで書かれるのだから、そもそも、main関数よりも前で関数を宣言するルール自体の意義がそもそも疑わしい。結局、コンパイルの際には、コンパイラは、main関数から関数呼び出しを行っている箇所のコンパイルをする際に、main関数よりもあとの(呼び出し先の関数の)関数定義の部分も、読み込まなければいけなくなってしまってるのである。しかし現実としてC言語では、「main関数よりも前で、関数の宣言が必要」というルールになっており、「main関数よりも前で関数の宣言さえしていれば、具体的な定義はmain関数よりも、あとでもいい」というルールになっている。結局、プログラム言語は、あくまで人工的な「言語」であり、けっして自然法則ではない。プログラム言語の文法は、妥協(だきょう)の産物である。
 
 
関数原型(関数プロトタイプ)とは、関数の宣言である。