へろーほげほげ
新規でC言語入門をみると大抵ハローワールドを表示させましょう的なものから入ります。
例えば
hellow.c
#include <stdio.h>
int main(int argc, char *args)
{
puts("Hello,HogeHoge!");
return(0);
}
はい、ちょっとひねくれたコードですがこれで動きます。
結果は
$ ./hellow
Hello,HogeHoge!
こんな感じです。
言語知らない人からしてみたらさっぱりですよね?
しかーーーし、この6行でも語らないといけないことがたくさーーんあるのである。
順番に行ってみよう
ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/09/22
- メディア: 単行本
- この商品を含むブログを見る
おまじない
よく、入門書だと、とりあえず分からないだろうかおまじないのように書いてください。
みたいなこと書いてあります。素人で趣味で遊ぶだけならいいですよ。
でもね、
プロ目指してる人はあかんとです。
大抵、おまじないで、書いてねってかいてるものは、仕事しててもおまじないだから書いてますって答えるんですよ(笑)
でもプロはそれでは通用しません、万が一問題があった時、どうしてその記述をしたのか私みたいな偏屈顧客や管理者から問われます。
なのでおまじないと書いている部分をすっ飛ばす場合は、必ずおまじないでなくなるよう学習してください。
こんなこといっていますが、自分も適当なときは書いときゃいいやってなります。
だってプロプログラマーじゃなかったんだもーん。( ゚д゚)
#include <stdio.h>ってかいてるよ。
はい、これなんじゃろな、一行目に書いてあるよ!
重要なんじゃない?ねーねー!入門書さん。
includeってかいているから何か含んでるのかな?
そうなんです、お決まりの規則以外言語には命令は全部書いてあげないといけないのです。
で、このサンプルプログラムで命令ってなんじゃろな?
puts関数です
です。
manを見ると
書式
#include <stdio.h>int puts(const char *s);
とかいてあります。
はい、ここでもわからん記載がありますが 、説明しだすと何時間もかかるようになるのでstdio.hが記載されてれば使えるだな、、と思ってください。
これは標準出力、、はて標準出力ってなんだ?本読んでください。今後書くかもしれませんが。Windowsユーザはかなりイメージし辛く、UNIXユーザはあっさりわかると思う内容になります。
で、その文字を出力する関数が入ったヘッダーファイル(xxxxxx.h)がstdio.hなんです。
スタンダードなアイオー(InputOutput)なんです。
もう少しいうと自分が学習していた頃はstdio.hではなくstdlib.hでした。
はい、おまじないと思って書いていても時代によっては違う状態になるんですよ!
まぁ大変
用意された関数を使う場合、その関数がどのライブラリにあるかを理解し、ヘッダーファイルを記述するということを理解していないと全くいらない場合でも記述していることがあります。((hファイルがなにかは入門書にかいてあるよね、、たぶん))
たとえば簡単な四則演算しかしていない関数を記載したファイルにもこのincludeが書かれていると
ああ、おまじないとして書いちゃってるのね、、、みたいにみられます。
大したことではないのですが、積み重なると、なんでこのプログラムにこんなヘッダーファイルあるの?ってよく言われるようになります。
大抵
コピー元にあったインクルードファイルそのまま残してます。
といってボコられるパターンです。
仕事では不要なものを書くと怒られますし、問題が起きた時切り分けが大変なので極力減らしたいのです。
ふむ、、、一行目で結構な文字数になってきたな。。。。
次回予告
int main(int argc, char *args)
何じゃこれ?、printf()じゃないの?を記載してみます。
まとめ
うーん、こんな記事書いて参考になる人いるのか疑問ですが、とりあえず何回か書いてみます。
余談
HogeHogeも知らない世代が多いのでいつか書こう。。。。