パソコン活用研究シリコンバレー(C、C++、の活用研究)

                  はじめに


1 BASICとC

BASICである程度プログラムが組めるようになると、そろそろCでもやってみようかという気になって
きます。昔は(8ビットマシンの時代は)、BASICから機械語(アセンブラ)というのが、お決まりのコース
でしたが、今は、やはりBASICからCというのが、定番でございましょう。(という時代も終わりつつあり
ますが)

雑誌等を見ても、BASICの限界とかBASICの実行スピードの遅さというのを、過剰にあおりたてて
盛んに”C”を奨めています。こんなにあおったら、だれでもBASICを袖にしてなんとなくCに走り
たくなってしまいますが、さて、Cって、BASICに比べていったいどこがいいんでしょうか?
(BASICからCへも、ちょっと古い時代の話、1990年代前半の話)

インタプリタのBASICは確かに、そこここで指摘されているように実行スピードは遅い。スピードを追求
するならネイティブコードの実行ファイルをCで作る方がいいでしょう。
しかし、BASICに対しCのもっといい点は、ハードウエアあるいはハードウエアに近い部分を制御する
プログラムが書けるということでしょう。(と、偉そうに言ってしまいましたが、筆者の場合特にCでなくては
困るというというプログラムを組んだことはありませんが。)

BASICはBASICで使いやすい良い言語だと思いますが、その反面やはり限界があります。例えば
RS232Cでパソコン間のシリアルデータ通信をやるプログラムを作るとなると、昔のBASICでは、
RS232Cの細かい制御はBASICだけではできませんでした。(BASICも進化しているのでVisual BASIC 4.0
以降では、かなり細かい制御ができる) こういった場合、Cは力を発揮します。まあ、もともとシステム
の記述用に開発された言語ですから、当然といえば当然ですが。


2 筆者のCコンパイラと動作環境
(1) Cのコンパイラ
BASICはこれまた方言のたくさんある言語ですが、Cもまたコンパイラによって多少の方言があります。
筆者はTURBO C(PC-98用とDOS/V用)とLSI C試食版を使用しておりますが、誰でも手に
入れられる、という点で、LSI Cを中心に話をしたいと思います。
いずれにせよ、MS-DOSあるいはDOS窓、DOSモード上でのプログラムになります。

(2) LSI-C試食版
さて、ここで本来ならコンパイラのインストールについて書かねばならないのですが(場合によってはこの
インストールが第一の関門だったりしますが)、おじさんは、MS-DOSでの環境設定が苦手&LSI-C
のコンパイラの設定(コンフィギュレーション)はなんか面倒くさそうなので、FU−TA氏
の超簡単LSI-C86
セットアップ (http://www.vector.co.jp/soft/win95/prog/se037541.html)を使いました。
これを使うと、ソースファイルを「コンパイル」というアイコンにドラッグ&ドロップするだけでOKなので
らくちんです。
LSI C試食版はhttp://www.vector.co.jp/ のベンダー提供エリアの エル・エス・アイ ジャパン などから
LSI C-86 Ver 3.30c 試食版 (lsic330c.lzh) を ダウンロードできます。また、Cマガジン他の雑誌の付録
CD-ROMにもよくあります。

その他LSI-C用のミニ開発環境ツールなどがVectorを探すといくつかでています。Vectorのライブラリーの
Windows>プログラミング言語>C言語>LSI-C を探してみて下さい。

(2)−1  LSI Cのインストールと環境設定補足

上記のLSI C86セットアップを使うとらくちんですが、開発マシンを移行した関係で、Newマシンでは
通常通りに環境設定して使っていますので、環境設定方法について簡単に触れておきます。

@ 展開
lsic330c.lzhを展開すると、デフォルトでは以下のようなフォルダが作られるはずです。
LSIC86 -- BIN (lcc.exe コンパイラ本体  lld.exe リンカ _lcc.def コンフィギュレーションファイル など)
      |- INCLUDE  (ヘッダーファイル)
      |- LIB
      |- MAN
      |- SRC

A PATHの設定
まず、環境変数PATHにlcc.exe, lld.exeのあるディレクトリへのパスの設定をします。
Windows 2000,XP ではPATHの設定は以下の通りにやります。「スタート」−「コントロールパネル」
−「システム」とたどり、「システムのプロパティ」画面を開きます。その画面上で「詳細設定」タブを選択
すると、下に「環境変数」ボタンがあります。「環境変数」ボタンを押すと以下のような画面が現れますので
"PATH"を選択し、「編集」ボタンを押します。変数の編集画面で、「変数値」ところに、パスの記述を追加
します。
通常デフォルト設定でのインストールなら、C:\LSIC86\BIN でOKです。
おじさんは、新しいPCに開発環境を移行させたのに伴い、D:\win95 というフォルダの下にインストールした
ので、D:\win95\LSIC86\BIN というパスを追記しました。



B Files
Files は20以上に設定しておきます。たぶんWindowsを普通に使っていれば、20に設定されているはずです。

C _lcc(コンフィギュレーションファイル)の記述
_lcc はコンパイラのオプション設定を登録しておくファイルです。コンパイラlcc.exe起動時に各種オプションが
省略された時には、_lccに記述されたオプション設定が有効となります。
LSI-Cのコンパイラlcc.exe のオプション設定は記述が結構面倒(でもないか?)なので、_lccによく使う設定
をしておけば、コンパイルの度にオプションを設定することなしに、即コンパイルできて便利です。

以下にあるのは、\BIN にある_lcc.defという標準的なコンフィギュレーションファイルの雛形です。
これは、LSI-CをAドライブにインストールしたという想定のコンフィギュレーションファイルになっています。
これをベースに、自分のインストール環境にあわせて書き直して使えばいいでしょう。
特に書き換える必要のあるのは、-X, -L, -I オプションです。

 # LSI C-86 compiler's configuration file
-DLSI_C
-XA:\LSIC86\BIN -LA:\LSIC86\LIB -IA:\LSIC86\INCLUDE -T -O
-acdos.obj $LSICOPTS
&#Command line argument will be inserted here
-lknjlib -ldoslib -v

この設定では、コンパイラをディレクトリA:\LSIC86\BIN に置くことを仮定しています。
-X, -L, -I, -Tはそれぞれ、コンパイラ本体、ライブラリ、ヘッダ、作
業用ファイルを置く
ディレクトリを指定するオプション、-Oは最適化を実行すオ
プション、-aは初期設定モジュール
の名前を、-lは使用するライブラリを名前を
指定するオプション、 -vはコンパイルの過程を
表示するオプションです。&はコ
マンドラインで入力されたパラメタをここで展開する指示です。
# から改行まで
はコメントです。$は指定された環境変数の内容をそこに展開します。

自分の環境に合わせて書き直したら、_lcc というファイル名(拡張子はつけません)にして、作業用ディレクトリ
またはPATHの通っているディレクトリ(通常は\BIN)におきます。コンパイラlcc.exeはカレントディレクトリ −>
PATHの通ったディレクトリの順に_lcc を探します。

D その他
とりあえず、手っ取り早く使うための、デフォルト設定について記述しましたが、詳しくは\MAN に
LSIC86.MANというマニュアルがありますので、じっくり読んで下さい。(読みたくないと思いますが)

E おじさんの環境設定の例
ちなみに、おじさんはLSI-CをD:\win95\LSIC86というディレクトリ以下にインストールし、ソースファイルと
生成された実行ファイル等は、作業ディレクトリとしてD:\win95\C に置いています。
したがって、環境変数PATHにD:\win95\LSIC86\BIN を追加。
_lcc は以下のような記述にして、作業用ディレクトリに置いています。

# LSI C-86 compiler's configuration file

-DLSI_C
-XD:\win95\LSIC86\BIN -LD:\win95\LSIC86\LIB -ID:\win95\LSIC86\INCLUDE -T -O
-acdos.obj $LSICOPTS
&		#Command line argument will be inserted here
-lknjlib -ldoslib -v

この環境設定では、以下のようにコンパイラにソースファイルを食わせれば実行ファイルが即生成されます。
>lcc SourceFile

以下はこの環境で、hello.c をコンパイルする流れです。

D:\win95\C>type _lcc

# LSI C-86 compiler's configuration file

-DLSI_C
-XD:\win95\LSIC86\BIN -LD:\win95\LSIC86\LIB -ID:\win95\LSIC86\INCLUDE -T -O
-acdos.obj $LSICOPTS
&               #Command line argument will be inserted here
-lknjlib -ldoslib -v

D:\win95\C>type hello.c
/*      HELLO.C -- Hello, world */

#include <stdio.h>

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

D:\win95\C>lcc hello.c
lld @link.i

D:\win95\C>dir hello.*
 ドライブ D のボリューム ラベルがありません。
 ボリューム シリアル番号は 8832-AEB9 です

 D:\win95\C のディレクトリ

2003/11/16  13:12               104 HELLO.C
2003/11/16  16:58            11,969 HELLO.EXE
               2 個のファイル              12,073 バイト
               0 個のディレクトリ   9,969,377,280 バイトの空き領域

D:\win95\C>hello
Hello, world

D:\win95\C>



(3) TURBO C2(DOS/V用)
Free Basic Translator (閉鎖中)というサイト(おじさんの関連サイト 「パソ活研5番街/
リンク集」にリンクあります)
でTC2(DOS/V)がダウンロードできます。DOS/V用です。Windows95/98/MeのDOS窓で使えます。
残念ながらPC-98では使えません。
Borlandのantique SoftwareのページからTurobo CやTurbo Pascalの古いバージョンがダウンロードできます。

TopPage