Cのプログラムにわざと間違いを入れて,コンパイルすると,その間違いに応じたエラーメッセージが表示されます.プログラミング学習の早い段階から,典型的なエラーを知っておくと,「何をすればよいか,何をしてはいけないか」が気づきやすくなり,コーディングの能率もアップします.
「こんにちは,エラーのある世界」と題して,1日につき一つのプログラム(ソースファイル)を紹介していきます.本日は実行環境と,基準となるエラーのないプログラムの紹介です.
実行にあたり,Windows 10 + Windows Subsystem for Linux (WSL) + Ubuntu 18.04を使用しました.インストール方法や利用上の注意などは以下よりご覧ください.
- BYODでC
- Ubuntu 18.04 を入手 - Microsoft Store ja-JP
- 「Windows Subsystem for Linux(WSL)」セットアップガイド【スクリーンショットつき解説】 | Linux Fan
- 【Windows10/WSL Ubuntu】gcc, make などの開発ツールをインストールして使う | The modern stone age.
2台のPCで,動作を確認し,スクリーンショットを撮りました.一つはふだん使っていないノートPCで,WSLのUbuntu 18.04をインストールしたのち,(このUbuntu用の)ユーザを新規に作成してから,「sudo apt update」と「sudo apt install build-essential」を実行したのみです.いわば,Cのコンパイルと実行を行うための最小限の環境です.メッセージは英語で,環境変数LANGの値はC.UTF-8となっていました.以下,「実行環境1」と呼びます.
もう一つは常用のデスクトップPCで,WSLのUbuntu 18.04のほか,wsl-terminalをインストールして起動し,フォントを変更してサイズを大きく(自分にとって見やすく)しているほか,シェルはzshを使用し,日本語メッセージを出すよう環境変数LANGの値はja_JP.UTF-8にしています.以下,「実行環境2」と呼びます.
基準となるエラーのないプログラムは,いわゆるハロー・ワールドです.wikipedia:Hello worldに記載のプログラムを,少し書き換えて,hello.cの名前で保存しました.
#include <stdio.h> int main(void) { printf("hello, world\n"); return 0; }
「cat hello.c」というコマンドで,プログラムファイルの中身を端末に表示させてから,「cc hello.c」のコマンドでコンパイルを行うと,実行ファイルa.outが作られます.「./a.out」で実行すると,無事に「hello, world」が表示されました.
実行環境1では:
実行環境2では:
どちらの画像にも,深い青色による横長の線が3本,あります.実際の画面では,ここにユーザ名とホスト名(計算機名)が書かれていまして,都合により隠しています*1.直後の「$」と合わせて,プロンプトと呼ばれ,我々はこのプロンプトの部分は打ち込みません.
さて,毎回カギカッコをつけて,地の文の中でコマンドを示すのは,書きにくいし読みにくいです.実行するコマンドとその出力は,以下のように記すのが一般的です.
$ cat hello.c #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } $ cc hello.c $ ./a.out hello, world
この表記においても,プロンプトの「$ 」は,実行時には打ち込みません.また「cc hello.c」のコマンドは(エラーがないと)何も出力されないため,「$ 」が2行,連続した形となっています.
次の記事からは,hello.cにエラーを入れて,どんなコンパイルエラーが発生するかを見ていくことにします.
*1:タイトルバーの表示も,塗りつぶしています.