このあいだ Qt について書いたせいか、C/C++ を勉強してみたくなった。Qt は C++ が標準なんだけど、まずは C からはじめることにした。で、書庫から昔買った本を引っ張り出してきた。
[amazonjs asin=”4798115770″ local=”JP”]
ちょっと古い本だけどまあいいだろう。
早速、短いプログラムが出てきたので書いてみよう(本とはちょっと変えてある)。ファイルの拡張子は .c だ。
#include int main(vold) { printf("This is short C program."); return 0; }
#include はヘッダファイルを読み込むための、プリプロセッサのディレクティブで、ここでは stdio.h というヘッダファイルを読み込むことをコンパイラに指示している。stdio.h には標準的な関数に関する情報が書かれている。この例では printf 関数を使うために読み込んでいる。
int main(void) は main 関数の定義の最初の部分。main が関数名で、() の中が引数のリスト。void というのは引数をとらないことを示している。int は関数の戻り値の型を指定している。
続く中括弧 {} の中が関数の本体。2つの文があって、printf 関数の呼び出しと return で戻り値 0 を指定している。文はセミコロンで終わらないといけない。
さて、じゃあこれをコンパイルしてみよう。
takatoh@nightschool $ gcc sample_1_1.c takatoh@nightschool $ ls a.out sample_1_1.c
a.out というファイルが新しく出来た。これがコンパイルした結果の実行ファイルだ。実行ファイルの名前を指定するには -o オプションを使う。省略すると a.out という名前になるらしい。
takatoh@nightschool $ gcc sample_1_1.c -o sample_1_1 takatoh@nightschool $ ls a.out sample_1_1 sample_1_1.c
今度は sample_1_1 ファイルが出来た。これを実行してみよう。
takatoh@nightschool $ ./sample_1_1 This is short C program.takatoh@nightschool $
printf が自動では改行してくれないせいで、プロンプトが続けて表示されてしまっているけど、うまく動いてるようだ。
サンプルをもうひとつ。
#include int main(vold) { printf("This is "); printf("another "); printf("C program.\n"); return 0; }
文が増えた。基本的に、文は上から順に実行される。だからこのプログラムは “This is another C program.” と出力するはずだ。ついでに最後には改行を入れてみた。
takatoh@nightschool $ gcc sample_1_2.c -o sample_1_2 takatoh@nightschool $ ls a.out sample_1_1 sample_1_1.c sample_1_2 sample_1_2.c takatoh@nightschool $ ./sample_1_2 This is another C program.
うん、うまくいった。