てけもぐ Tech 忘備録

Cの hello world サンプルについて

対象読者

C言語初学者

解決すること

かつて味わった hello world コードの疑問に今の自分が答える

内容

私もかつて持っていた C言語のバイブル K&R では、以下のようなサンプルが最初に紹介されているそうで。

#include <stdio.h>

main()
{
    printf("hello, world\n");
}

main() 関数の返り値の型や引数がないとか、リターンが省略されてるのはどうなのかとかありますけど、そのへんよりも私は #include<stdio.h> の方が気になる。

人によっては printf() 関数という入出力を扱う例よりも、ただ return 2+2; とかの方がいいんじゃないかって人もいるかと思いますけど、そこは面白みを感じてもらうためにこの例にしたのではないかなぁと。

でも、#include<stdio.h> は、ここで引っかかりを感じる人もいるのではないだろうか。しかも、読み込んだファイルの中身も含めてこれがちゃんと分かるのはだいぶ後になってから。

それなら、最初は puts() を使ってプロトタイプを直書きし、プロトタイプ自体の説明をしてもいいんじゃないかと思う。

int puts(char *s);

main (){
  puts("hello world\n");
}

初学者は、何故関数名が2度も出てこなければいけないのか疑問に思うだろうが、それは説明出来るしその説明は結構大事。#include をおまじないとして長く放っておくよりもいいと思うんだけども。どうだろう。

Tags