エディタを作る -1の続き② 開発者プロンプト

C言語等の 言語入門書 は、大抵の場合 GUIでグラフィカルなプログラムを例題にせずに、CUIのコンソール・プログラムをサンプルにすることが多い。 (というか、ほとんどの本がそうだ)
 開発環境も ①エディタで プログラム・ソースを書いて、②コマンド・ラインででCコンパイラを起動して コンパイル・・・ ③ ほら 、動きました~
 というのが ほとんどだ。

デバッグのし易さとか、そもそも自分でデバッグする事など まったく眼中に無い解説ばかりだ。 これで、本当にプログラミングを自分の独力で出来るようになるのだろうか?

ここでは、Windows上で動く 無料版のVisual Studioを開発環境に使って、進めて行こうと思っている。 

Visual Studio 2010以前だと、コマンド・ライン上から C言語のコンパイラをい動かそうとした場合、環境変数 という一般的に聞きなれないものに、色々とセットしないと 動かない。  この作業が分からない初心者にとっては、なかなかハードルが高い。

Visual Studio で使われる Cコンパイラの実行ファイル名は、
   cl.exe
で ずっと統一されているはずなので、コマンド プロンプトを起動して、CLと打ち込み 実行した時、これが実行できれば 第一関門は突破したと言える。

コマンド CL

こんな感じ ↑ に CLの使い方が表示されるなら、CLが起動できている事になる。

それには、cl.exe が格納されているフォルダに PATH(パス)が通っている必要なある。 ちなみに cl.exeの (Cはコンパイル、Lはリンクを意味するらしい。 当初は C Languageの略かと思っていた)

これとは 別に ① ヘッダーファイル(stdio.h等)が入っているフォルダが設定されている事、② リンクされる Lib(ライブラリ)の入っているフォルダがセってされている事、も必要となる。

なかなか面倒なので、説明の詳細は ここでは省くこととする(インターネット上に沢山の解説が出ている ので…)

Visual Studio 2013以降 だと それが、簡単に行える方法が用意されている。
それが、「開発者コマンドプロンプト」だ!

開発者コマンド-00

上 ↑ のショートカット・アイコンは Visual Studio 2013のものだが、これを起動すると 環境変数に対して 必要な設定がすべてセットされた上で、黒い画面が開く。 だから、そのまま 直ぐに Cコンパイラが使える状態になっている。

  Visual Studio 2017でも、2019でも、もちろん 無料版のをインストールしても自動的に スタートメニューから これが起動できるように Visual Studio Tools内に作られる。 (デスクトップにショートカットアイコン ↓ を作っておくと便利だ)

開発者コマンド-01

これを ダブルクリックして起動すると、見た目はいつものコマンド・プロンプトだが、C言語の開発がすぐに始められるようになっている。(良く考えたものだ!)

開発者コマンド-02

ここから cl.exe が すぐに実行 ↓ できる。

開発者コマンド-02a

この環境に 問題があるとするなら、フォルダが深すぎて プロンプト表示が鬱陶しい点だ。
 C:\Program Files(x86)\Microsoft Visual Studio\2017\???> 
って いくらなんでも長すぎ、そして センスが悪すぎる。

この問題の解決方法としては、デスクトップ上に作ったショートカット・アイコンを右クリックし、プロパティを表示し、その中の「ショートカット」タブにある「作業フォルダ」を変更しておくと良い。

開発者コマンド-03 作業用フォルダ

例えば、Dドライブのルート直下に Cという名称(または Cppという名称)のフォルダを作っておき、そこを作業用のフォルダとして 設定する。

この C または Cppフォルダ下に プロジェクト名のフォルダを作って、そこにソースファイルを作成したり、コンパイルしたり、リンク&テスト実行を試す。

最初の hello worldのソースファイルを(main.cでも良いのだが)、
  editer01-1_hello.c 
というファイル名で、 EditerConsole\01day フォルダ内に作ったとする。
 (この時は、TeraPadエディタを使用)

開発者コマンド-04 コンパイル

cl.exe を使って コンパイル & リンクするには、
  >cl  ファイル名<Enter>
だけで良い。

開発者コマンド-04a コンパイル

実行すると ↑ ちゃんと ”hello,world” の文字列が表示される。

この辺りの 開発者コマンドプロンプトについては、
  書籍「スラスラわかる C++」
に詳しく載っている。 ↓

開発者コマンド-01a

そして、C言語のソースをコンパイルするには、
  >cl  /EHsc  ファイル名<Enter>
という オプション・スイッチを付けるよう指示されている。

ところが、この /EHsc が何を意味しているのか、文中では その詳細は全く説明されていない。 プログラミング入門書が こんな調子で良いのだろうか?
 ⇒ 良い訳が無いが、ほとんどの人は調べようとしない
   (というか、疑問にも思わないのだろうか?)

ネット上で、clのオプション指定を調べてみたら、
  /EH で 例外処理モデルを指定する
と なっている。 これでは何の事か、さっぱりわからない。
(英語から日本語への自動翻訳も ひどいもので、日本語になっていない)

Microsoft社の Visual Studioチュートリアル:「コマンドラインでのネイティブC++プログラムのコンパイル」というページに、少しはマシな説明が合ったので、それを以下に抜粋しておく。

/EHsc は、標準の C++ 例外処理動作を有効にするようコンパイラに指示するコマンド ライン オプションです。 これを行わないと、スローされた例外によって、破棄されないオブジェクトやリソースのリークが発生する可能性があります。 詳細については、「/EH (例外処理モデル)」を参照してください。

この説明ですら 分かりづらいが、要はISO標準の例外処理が使用されるようになるらしく、このオプションを指定しないと 「リソースのリークが発生する可能性がある?」・・・ だったら 最初からこの設定を有効にしておけヨ! と言いたくなるが、これを付けた方が安全らしい。 良く分からん!

ただ、
問題は別にある・・・  それは、この書籍が 初心者に 毎回、毎回 このオプション・スイッチを手入力させている点である。 こんな無駄な作業は 省略できる方法を提示すべきである。

例えば、テキスト・エディタで cc.bat という BATファイルを作成しておく。
その内容は ↓ こう。

01-BATファイル

その上で、PATHの通ったフォルダにこれをコピーしておき、
使う時は、コマンド プロンプトで
 >cc  ファイル名 <Enter>
とする。
例えば、ソース・ファイル名が main.c だった場合、↓
 >cc  main.c <Enter>
とキー入力する・・・これだけで済む。(main.c がファイル名)

。cc と指定するだけで、cc.bat ファイルが実行され、/EHsc オプション付きで main.c ソースファイルが、コンパイル/リンクされる。

作業は少しでも 「楽」をしようと、常に考えるクセを付けることが 大切である。

ただし、そもそも コマンド ラインからコンパイルをかけている段階で 作業効率が悪すぎる。 こんな「カビが生えそうな」開発方法・・・ これでは GUIでデバッグすらできない。 根本的にそこを改善するのが重要だと思われる。

ハッシュタグ
#C言語 #エディタを作る

いいなと思ったら応援しよう!