以下では Windowsでの Cのプログラムの作成とコンパイルの手順を説明します。 プログラミング Ⅰの授業では、bcc32というボーランド社製のコンパイラを使用します。
Cのプログラムはメモ帳などのエディタで作成します。 拡張子は通常 .cです。
次のような簡単なファイルを作成して、 hello.cというファイル名で保存して下さい。
#include <stdio.h> int main(void) { printf("hello world!\n"); return 0; }
灰色の部分は C言語の実行に必要な「お約束」で最初のあいだはこの部分は変わらないので、この形のままを覚えておきます。 printfは標準出力(通常は画面)に文字列を出力する関数(プログラム部品)です。 「\n」は改行を表します。
作成したプログラムのコンパイルは コマンドプロンプトから行ないます。 コマンドプロンプトはキーボードからコマンドを入力して実行する時に使用するウインドウです。通常(Windows Vistaの場合)コマンドプロンプトは「スタート」 ─ 「すべてのプログラム」 ─ 「アクセサリ」 ─ 「コマンドプロンプト」から起動します。
まず コマンドプロンプトの作業フォルダを Cのプログラム hello.cを作成したフォルダに移動する必要があります。 フォルダの移動は cd(change directory)というコマンドを使用します。
cd パス
C:\Users\sXXtXXX>cd \home C:\HOME>
C:\Users\sXXtXXX>cd "\Program Files" C:\Program Files>
C:\Users\sXXtXXX\Documents>cd .. C:\Users\sXXtXXX>
フォルダを移動したら、本当に作成した Cのプログラムのファイルがそこにあるか、確認しておきます。 フォルダの中にあるファイルの一覧を表示するには、dirというコマンドを使用します。
C:\Users\sXXtXXX\Documents\Programming1>dir ドライブ C: のボリュームラベルはありません. ボリュームシリアル番号は XXXX-YYYY です。 C:\Users\sXXtXXX\Documents\Programming1 のディレクトリ yy-mm-dd hh:mm <DIR> . yy-mm-dd hh:mm <DIR> .. (省略) yy-mm-dd hh:mm 83 hello.c (省略) ? 個のファイル ? バイト ? 個のディレクトリ ? バイトの空き領域
パスとは、C:\Users\sXXtXXX\Documents\Programming1\hello.cのように ファイルやディレクトリの場所を表す文字列です。エクスプローラで「場所」の左端のアイコン (下図の赤線で囲ったところ)
をクリックしたときに表示される文字列です。パスには絶対パスと 相対パスがあります。 先頭に \がついているかどうかで、絶対パスと相対パスを区別します。 \がついていれば絶対パスです。
絶対パスとは “\Users\sXXtXXX\Documents\Programming1\hello.c” のように場所を省略することなく、すべて記述したものです。このパスは Usersフォルダの中の sXXtXXXフォルダの中の Documentsフォルダの中の Programming1フォルダの中の hello.cというファイルを表します。 (Window系の場合、ファイルの位置を示すためには、パスの前に C:のような 「ドライブ名」が必要になります。)
相対パスは絶対パスの最初のいくつかの部分を省略したものです。 現在のディレクトリのパスに対する相対的な位置を表します。 特に単にファイル名を書けば、そのディレクトリにあるファイルを表します。 例えば、\Users\sXXtXXX\Documents\Programming1\ というパスで表されているディレクトリから、hello.exe という相対パスで参照されるファイルの絶対パスは \Users\sXXtXXX\Documents\Programming1\hello.exeです。
下の例は現在のディレクトリのパスが \Users\sXXtXXX\Documents\Programming1\の場合です。
相対 パス | 絶対 パス |
---|---|
hello.c | \Users\sXXtXXX\Documents\Programming1\hello.c |
Examples\bonjour.c | \Users\sXXtXXX\Documents\Programming1\Examples\bonjour.c |
..\ProgLang\sawadi.c | \Users\sXXtXXX\Documents\ProgLang\sawadi.c |
bcc32 ソースファイル名
C:\Users\sXXtXXX\Documents\Programming1>bcc32 hello.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland hello.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland C:\Users\sXXtXXX\Documents\Programming1>
コンパイルに成功すれば、ソースファイルのファイル名の拡張子だけを .exeに変えたファイルができているはずです。 これが実行可能ファイルです。
C:\Users\sXXtXXX\Documents\Programming1>dir ドライブ C: のボリュームラベルはありません. ボリュームシリアル番号は XXXX-YYYY です。 C:\Users\sXXtXXX\Documents\Programming1 のディレクトリ yy-mm-dd hh:mm <DIR> . yy-mm-dd hh:mm <DIR> .. (省略) yy-mm-dd hh:mm 83 hello.c yy-mm-dd hh:mm 52,224 hello.exe (省略) ? 個のファイル ? バイト ? 個のディレクトリ ? バイトの空き領域
「'bcc32'は内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というメッセージが出た時は、bcc32が コマンドプロンプトの知っている場所(サーチパス)にない可能性があります。 pathというコマンドで確認します。
C:\Users\sXXtXXX\Documents\Programming1>path PATH=C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;
C:\Users\sXXtXXX\Documents\Programming1>path C:\borland\bcc55\Bin;%PATH% C:\Users\sXXtXXX\Documents\Programming1>path PATH=C:\borland\bcc55\Bin;C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;
実行可能ファイルはそのファイル名を入力すると実行できます。 (拡張子の.exeは省略できます。)
C:\Users\sXXtXXX\Documents\Programming1>hello hello world!
なお、ソースファイルの中に何か間違いがあってうまくコンパイルできないことの方が普通です。 エラーメッセージには何行めがエラーになっているか、という情報が書かれていますので、再びエディタでソースファイルを編集して、 コンパイルしなおします。
なお コマンドプロンプトでは上矢印キーを打つと以前入力したコマンドが表示されます。
コマンドプロンプトでは通常のショートカットキー(Control-Cと Control-V)でコピー・ペーストの操作ができません。コマンドプロンプトのウインドウの 左上の小さなアイコン: (下図の赤線で囲ったところ)
をクリックし、「編集」─ 「コピー」または「貼り付け」を選びます。少し長いプログラムをコンパイルすると、エラーメッセージが コマンドプロンプトの画面に入り切らないということが起こります。 そういう時は、プログラムの出力を画面ではなく、ファイルや他のコマンドの入力に切替えるリダイレクトという手法を使います。
コマンド > ファイル名 コマンド1 | コマンド2
C:\Users\sXXtXXX\Documents\Programming1>bcc32 hello.c > error.txt C:\Users\sXXtXXX\Documents\Programming1>bcc32 hello.c | more