ChIDEユーザーズガイド
-
導入
-
はじめに
-
例題1 - 出力をともなうC/Ch/C++プログラムの作成と実行
-
プログラムのインデント
-
Chにおけるパスの設定とコマンドの検索
-
例題2 - 入力を伴うサンプルの実行
-
例題3 - プロットの実行
-
例題4 - コマンドライン引数を伴った実行
-
C/Ch/C++ プログラムのデバッグ
-
デバッグコマンドウィンドウ内での [debug] コマンドの使用
-
アウトプットウィンドウ内でのコマンドの対話的実行
-
C/C++プログラムのコンパイルとリンク
-
ChIDE におけるバッファ
-
ChIDE におけるセッション
-
ChIDEで解釈可能な文書
-
ChIDEにおける編集
-
ChIDEにおける検索と置換
-
ChIDEにおけるキーボードコマンド
-
ChIDEにおける省略表現
-
ChIDEにおける折りたたみ表示
-
ChIDEにおけるエンコーディング
導入
ChIDEは、C/Ch/C++プログラムをChで作成、デバッグ、実行するための統合化開発環境(IDE)です。
Ch
は、クロスプラットフォームスクリプティング、シェルプログラミング、
2D/3Dプロット、数値計算、および組み込みスクリプティング用の、
組み込み可能なC/C++インタープリタです。ChIDEは、
Embedded Chを用いて開発されています。
WindowsにおいてはMicrosoft Visual Studio .NET、
LinuxおよびMac OS X x86においてはgcc/g++のような
CおよびC++コンパイラを好みに応じて用いると、
ChIDEは編集済みのC/C++プログラムをLinuxおよびWindows上で、コンパイル、リンクすることもできます。
ChIDEのユーザインターフェースを、日本語、ドイツ語、フランス語、中国語、韓国語
のような多くの言語のなかから選択することが可能です。
このドキュメントは、ChIDEのいくつかの機能と、プログラム開発のためのその使用法について説明しています。
ChIDEの最新のドキュメントは、
ここからダウンロードすることが可能です。
はじめに
ChIDEは、Ch Professional、Student、およびEvaluationの各エディション用に、
Windows、Linux、およびMac OS X x86の各プラットフォームに対して使用可能です
(注.ただし日本語版として提供されているのは現在のところ、
Ch ProfessionalのWindows版のみです)。
ChIDEは、コマンド
chide を実行して起動することができます。
Windows上では、ChIDEは、
図 1 に示されているように、
デスクトップ上でそのアイコンをクリックして、簡単に起動することも可能です。
図 1: Windows、Mac OS X、およびLinuxのデスクトップ上でのChIDEアイコン
Mac OS X x86ではChIDEは、ダッシュボード上または
Applicationフォルダにある 図 1
のようなアイコンをクリックしても起動することができます。
LinuxではChIDEは、スタートアップメニューのエントリProgramming Tools
で起動することもできます。
Linuxではコマンド
ch -d
はCh用のアイコンをデスクトップ上に作成します。
ChがChIDEとともにインストールされた場合、ChIDE用のアイコンもまたデスクトップ上に作成されます。
ChIDEが起動されると、そのグラフィカルユーザインターフェースが、
図 2 のように表示されます。
ここで説明されている情報は、[ヘルプ] → [ChIDE 解説書] をクリックすると表示されます。
図 2: ChIDEの使用法に関するオンラインヘルプの表示方法
ChIDEのツールバーまたはデスクトップ上の Ch アイコンを
クリックすると、図 3 のようなChコマンドシェルが起動されます。
ウィンドウの左上隅角にあるChアイコンを右クリックし、[プロパティ] メニューを選択すると、
シェルウィンドウのウィンドウおよびフォントサイズと同様に、そのテキストと背景の色も変更可能です。
なおWindows Vista上でこのような変更を行う場合、ChIDEを管理者権限で実行する必要があります。
このコマンドシェル内で、MS-DOSとUnixコマンドを実行することができます。C/Ch/C++
プログラムと同様に、CまたはC++ステートメントもまた、図 3
に示すように実行可能です。
図 3: Ch コマンドシェル
例題1 - 出力をともなうC/Ch/C++プログラムの作成と実行
ChIDEにおけるテキスト編集作業は、[メモ帳] に自動書式スタイリング機能を追加したような、
ほとんどのWindowsまたはMacintoshエディタでの作業と類似しています。
ChIDEは一度に複数のファイルをメモリ上に保持することが可能ですが、表示されるのは、
1つのファイルのみです。ChIDEは最大20個のファイルまでをメモリに保持可能です。
WindowsではAltキーを押しながら、
またGTK+ではCtrlキーを押しながらテキスト領域をマウスでドラッグすると、
矩形領域のテキストを選択することができます。
ChIDEには、編集ウィンドウ、デバッグウィンドウ、デバッグコマンドウィンドウ、アウトプットウィンドウの4つのウィンドウがあります。
デバッグウィンドウは、編集ウィンドウの下または右に配置されています。
このウィンドウのサイズは起動時にはゼロになっていますが、
編集ウィンドウとの境界をドラッグすることにより、拡大することができます。
デバッグコマンドウィンドウは、デバッグウィンドウの下または右に配置されています。
同様に、アウトプットウィンドウもデバッグウィンドウの下または右に配置されていて、
起動時にはゼロになっていますが、
デバッグウィンドウとの境界をドラッグすることにより、拡大することができます。
既定では、プログラムからの出力はアウトプットウィンドウに出力されます。
[表示] → [左右に分割] を選択すると、
ChIDEの水平レイアウトを変更し、編集ウィンドウを左側に、
デバッグウィンドウを真ん中に、そして
アウトプットウィンドウとデバッグコマンドウィンドウを右側に配置することができます。
現在のセッションにおける、ChIDEの位置とサイズ、
編集ウィンドウ、デバッグウィンドウ、およびアウトプットウィンドウのサイズは、
ChIDEが閉じられる際に保存されます。ChIDEが次回起動される
際には、前回のセッションでこれらの保存された値が、新しいセッションに対して使用されます。コマンド[表示] → [既定のレイアウト] は、
ChIDEのグローバルおよびユーザーオプションファイル内
の値を使用し、ChIDE がこの既定値を使うようにリセットします。
ChIDEで編集済みのC/Ch/C++プログラムは、コンパイルすることなしに、
すぐにChインタープリタでデバッグまたは実行可能です。
また編集済みのプログラムは、Microsoft Visual Studio .NETのようなC/C++コンパイラを用いて
コンパイル、リンクし、ChIDEで実行することも可能です。
プログラムからの出力は、直接アウトプットウィンドウに表示されます。
たとえば、新規ドキュメントを開き、以下のプログラム
#include
int main() {
printf("Hello, world!\n");
return 0;
}
を入力します。
同じプログラム hello.c は CHHOME/demos/bin/hello.c に含まれています。
ここで、CHHOMEはChのホームディレクトリで、Windows上では、
C:/Ch/demos/bin/hello.c のようになり、
[ファイル] → [開く] コマンドロードすることができます。
Windows上では、Windows エクスプローラの一覧にあるプログラムは、これをドラッグしてChIDE上にドロップし、その編集ウィンドウ内で開くことも可能です。
このプログラムは、
図 4 のように、書式が色付きで強調されて表示されます。
図 4: ChIDEの編集ウィンドウ内で編集されたプログラム hello.c
クラスでのプレゼンテーション用に、表示されたプログラムのフォントサイズは、
[表示] → [フォントサイズの変更] を選択して変更することができます。
編集ウィンドウの左側の行番号、余白、および折りたたみ表示用の余白は、
コマンド [表示] → [行番号]、[余白]、および [折りたたみ表示用の余白]
をそれぞれクリックして、 図 5 のようにオフにすることができます。
折りたたみ表示用余白上の折りたたみ点のマーカー '-' と '+' をクリックして、
ブロックコードをそれぞれ展開したり、折りたたんだりすることができます。
図 5: ChIDE内に、行番号、余白、折りたたみ表示用余白
なしに表示されたプログラム
このドキュメントをコマンド [ファイル] → [名前を付けて保存] により、
図 6 のように、ファイル名hello.cとして保存します。
デバッグバーの下にあるそのファイル名のタブを右クリックして、
図 7 のように、
コマンド[名前を付けて保存] を選択し、そのプログラムを保存することもできます。
図 6: コマンド [ファイル] → [名前を付けて保存] を使用して、
編集したプログラムhello.cを保存
図 7: ファイル名を右クリックして、編集したプログラムhello.cを保存
以下のファイル拡張子をもつC/Ch/C++プログラム
.c、
.ch、
.cpp、
.cc、および.cxx,
またはファイル拡張子をもたないプログラム
は、ChIDEで容易に実行可能です。
プログラム hello.c を実行するには、
図 8 のように、[実行] ボタン、
または [ツール] → [実行] メニュを選択します。
図 8: プログラム hello.c の実行とその出力
プログラム hello.c 実行時に
アウトプットウィンドウがまだ表示されていない場合は、これが表示され、以下の実行結果
>ch -u "hello.c"
Hello, world!
>Exit code: 0
が
図 8 のように出力されます。
ChIDEから出力された1行目の青字の行は、ChIDEがプログラムを起動した際に使用した
コマンドを示しています。黒字の行は、Chプログラムの実行結果です。
ChIDEから出力された最後の青字の行は、プログラムが終了し、
その終了コードを表示したことを示しています。終了コードがゼロであることは、実行が
正常に終了したことを意味しています。
ChIDEは、Chが発生したエラーメッセージを正しく受け取ることができます。
このことを確かめるには、Chソースファイルに意図的に誤りを追加します。たとえば、
printf("Hello, world\n");
の行を、
printf("Hello, world\n";
のように変更してから、プログラムを実行します。結果は以下のようになります。
>ch -u "hello.c"
ERROR: missing ')' before ';'
ERROR: syntax error before or at line 7 in file 'hello.c'
==>: printf("Hello, world\n";
BUG: printf("Hello, world\n"; <== ???
ERROR: cannot execute command 'hello.c'
>Exit code: 1
実際の実行画面は、
図 9 のようになります。
図 9: プログラム hello.c 実行時のエラー出力
図 8 におけるアウトプットウィンドウ内の赤字の行をクリックすると、
不正な書式を含んだ行が
図 10 のように強調表示されます。
図 10: プログラム hello.c 実行出力からのエラー行の検索
この単純なケースでは、問題がどこにあるかを見つけるのは簡単ですが、大きなファイルの場合、
[ツール] → [次のエラーメッセージ] コマンドまたはファンクションキーF4
を使用して、レポートされたエラー個所を表示すること
ができます。[ツール] → [次のエラーメッセージ] を実行すると、
アウトプットウィンドウ内の最初のエラーメッセージと、編集ウィンドウ内の該当する行が、
黄色い背景で強調表示されます。
文字カーソルがこの行に移動し、必要な場合は編集ウィンドウがスクロールします。
ChIDEは、
図 10 のようになります。
コマンド [ツール] → [前のエラーメッセージ] またはファンクションキーF4
は、前のエラーメッセージの表示に用いられます。
ほとんどの場合ChIDEは、エラーメッセージのファイル名と行番号を検知し、
エラーが(ヘッダファイルのような)外部のファイルで発生した場合には、
そのファイルを開きます。この機能は、空白または ".." を含んだ複雑なファイル名
に対しては、動作しません。
コマンド [表示] → [アウトプットウィンドウ] を選択すると、
アウトプットウィンドウを開く/閉じることができます。
コンソールウィンドウの内容は、
図 11に示されるのように、
[表示] → [アウトプットウィンドウの消去] またはファンクションキーF9により、消去することができます。
図 11: アウトプットウィンドウの内容の消去
コマンドの実行が失敗し、終了に非常に時間がかかる場合は、
[プログラムの強制終了] ボタン、またはデバッグツールバーの [実行の停止] コマンドを使用します。
Windows環境においてChIDEは既定では、ツールをコマンドラインプログラムとして実行します。
このモードでGUIプログラムを実行すると、ウィンドウを表示せずにプログラムが実行されます。
プログラムを実行せずにその書式チェックのみを行うには、[文法解析] ボタン、
または [ツール] → [文法解析] コマンドを使用します。
プログラムのインデント
読みやすさとソフトウェアのメンテナンスのために、
プログラムの各行に適切にインデントが設定されます。
ツールバー上のコマンド [ツール] → [インデント] は、
編集ウィンドウ内のプログラムに適当にインデントを設定します。
デバッグバーの下にあるファイル名のタブを右クリックし、
コマンドインデントを選択して、プログラムにインデントを設定します。
図 34 は、
[インデント] も含む、[ツール] メニューの下の全コマンドを示しています。
図 7 は、
ファイル名が右クリックされたときのコマンドインデントを示しています。
Chにおけるパスの設定とコマンドの検索
コマンドを実行する目的で、コマンドシェルのプロンプトに入力すると、
コマンドシェルがそのコマンドを、前もって指定されたディレクトリ内で検索します。
Chシェルでは、文字型のシステム変数
_path
は、そのコマンド検索のディレクトリを含んでいます。
各ディレクトリは、文字列 _path 内でセミコロンで区切られています。
Chコマンドシェルが起動されると、システム変数 _path はいくつかの既定の
検索パスを含みます。
文字型の引数を追加してそれを新規の文字列として返す文字関数 stradd()
を用いて、コマンドシェル用の検索パスに新たなディレクトリを追加することができます。
たとえば、ディレクトリ
C:/Documents and Settings/Administrator/c99
は、コマンドの検索パスではありません。
プログラム hello.c を実行しようとしたときに、現在の作業ディレクトリが
C:/Documents and Settings/Administrator
である場合、Chシェルはこのプログラムを探すことができずに、以下の
2つのエラーを発生します。
C:/Documents and Settings/Administrator> hello.c
ERROR: variable 'hello.c' not defined
ERROR: command 'hello.c' not found
Chが起動されるか、またはChプログラムが実行された場合、既定では、
ユーザのホームディレクトリ(が存在すれば)上で設定ファイル .chrc
(Unix)または _chrc(Windows)が実行されます。
このドキュメントでは、これ以降、ホームディレクトリ上に
設定ファイル _chrc があるWindows環境でChが使用されるものと仮定します。
この設定ファイルは、通常コマンド、関数、ヘッダファイルなどの検索パスを設定します。
Windows上では既定の設定での設定ファイル _chrc は、Chのインストール中に
ユーザのホームディレクトリ上に作成されます。
しかしながら、Unixでは、既定でユーザのホームディレクトリ上に設定ファイルはありません。
システム管理者はこのような設定ファイル .chrc を、
ユーザのホームディレクトリに追加することが可能です。
しかしながら、ホームディレクトリ上に設定ファイルがまだない場合に、
サンプルの設定ファイルを CHHOME/config/ ディレクトリから
このユーザのホームディレクトリにコピーするために、ユーザは、
Chを以下のようにオプション -d 付きで実行することができます。
ch -d
CHHOME は文字列 "CHHOME" ではなく、
Chがインストールされるファイルシステムのパスであることに注意してください
たとえばChは、既定でWindowsでは C:/Chに、Unixでは /usr/local/ch
にインストールされます。
Windows上では、Chシェルにおけるコマンド
C:/Documents and Settings/Administrator> ch -d
は、ユーザのホームディレクトリ
C:/Documents and Settings/Administrator.
上の設定ファイル _chrc を上書きしようとします。
このローカルのCh初期化設定ファイル
_chrc
は、
図 12 に示されるように、
ChIDEエディタで、検索パスの編集用に開かれます。
図 12: ローカルのCh初期化設定ファイルを編集用に開く
ディレクトリ C:/Documents and Settings/Administrator/c99
をコマンドの検索パスに含ませるには、コマンド
_path = stradd(_path, "C:/Documents and Settings/Administrator/c99;");
をユーザのホームディレクトリ上の設定ファイル _chrc 追加して、
このディレクトリ上のコマンド hello.c が
現在の作業ディレクトリに関係なく起動できるようにする必要があります。
ディレクトリ
C:/Documents and Settings/Administrator/c99
を検索パス _path に追加後は、Chコマンドシェルを再起動する必要があります。
これ以降は、このディレクトリ上のプログラム hello.c を
以下のように起動可能になります。
C:/Documents and Settings/Administrator> hello.c
Hello, world
コマンドに対する _path と同様に、
Chにおけるヘッダファイルは、システム変数 _ipath で指定される
ディレクトリ内で検索されます。
各パスは、同様にセミコロンで区切られます。
たとえば、ステートメント
_ipath = stradd(_ipath, "C:/Documents and Setting/Administrator/c99;");
は、ディレクトリ
C:/Documents and Setting/Administrator/c99
をヘッダファイルの検索パスに追加します。
以下のステートメントを用いて、このディレクトリに関数ファイル
検索パスも追加することができます。
_fpath = stradd(_fpath, "C:/Documents and Setting/Administrator/c99;");
例題2 - 入力を伴うサンプルの実行
この例題では、ユーザによるデータ入力を必要とするC/Ch/C++プログラム/スクリプト
の実行方法を示します。
図 13 のようなコードを入力します。
同じプログラム C:/Ch/demos/bin/scanf.c
は、[ファイル] → [開く] を用いてロードすることもできます。
実行中に、このコードは "Please input a number" とユーザに問い合わせ、そして、
"Yout input number is" と入力された数字をシステムに出力させます。
図 13: 入出力を伴うプログラム
このプログラムの実行中に、
図 13 のように、ユーザは数字の入力を求められます。
ユーザは入アウトプット用の同じウィンドウ内に数字を入力する必要があります。
入力された数字56とアウトプットは、
図 13 のように表示されます。
例題3 - プロットの実行
この例題では、グラフをプロットするC/Ch/C++プログラム/スクリプトの実行方法を示します。
図 14 のようなコードを入力します。
図 14
で示されるプログラムと同じもの C:/Ch/demos/bin/fplotxy.cpp
は、[ファイル] → [開く] コマンドを用いてロードすることもできます。
このプログラムが実行されると、
図 15 のようなグラフがプロットされます。
プロット関数 fplotxy() は、ChまたはSoftIntegration Graphical Libraryで提供されます。
図 14 で示されるプログラムは、
関数 fplotxy() を使用して、関数 func() の値をxが0から360の範囲について37個の点でプロットします。
ヘッダファイル chplot.h でのプロット機能を用いてプログラムをコンパイルするには、
このプログラムをファイル拡張子 .cpp 付きのC++プログラムとして扱い、SIGL C++ プロット
ライブラリとリンクする必要があります。
C++コンパイラを用いてC++プログラムをコンパイルする方法については、あとで説明されます。
図 14: fplotxy() を用いたプロットプログラム
図 15: プロットプログラムの出力
プロット関数 plotxy() は、C配列内のデータのプロットに使用することができます。
図 16
で示されるプログラム C:/Ch/demos/bin/fplotxy.cpp
は、通常のC配列を用いて、プロットで使用されるデータを格納します。
図 16
で示されるプログラム
C:/Ch/demos/bin/plotxy.cpp
がロードされ、実行されると、
図 15 と同じグラフがプロットされます。
図 16: plotxy() を用いたプロットプログラム
プロット関数 fplotxyz() は、
図 17 に示されるように
2つの変数を伴った三次元関数のプロットに使用されます。
このプログラムは、-3から3の範囲のxの値と-4から4の範囲のyの値に対して、
関数 cos(x)sin(y) をプロットします。
このプロットには、xとyの両方に対して80個の点が使用されます。
図 17のプログラム
C:/Ch/demos/bin/fplotxyz.cpp
がロードされ、実行されると、
図 18 に示されるような
グラフがプロットされます。
図 17: fplotxyz() を用いたプロットプログラム
図 18: fplotxyz() を用いたプロットプログラムの出力
例題4 - コマンドライン引数を伴った実行
ChIDEには、変更可能なコマンドライン引数をもつコマンドの実行に使用できる、
4つのプロパティ $(1) .. $(4) があります。これらのコマンドライン引数を設定するには、
[ツール] → [コマンドライン引数] コマンドを用いて、これらの現在の値を表示して
新規の値の設定を許可する、モードレスの[コマンドライン引数] ダイアログを表示します。
メインウィンドウのショートカットキーは、このダイアログ表示中にも有効ですので、
コマンドを異なる引数で迅速に複数回実行する際に、
このダイアログを使用することができます。
これを使う代わりに、'*' で始まるコマンド
(そうでない場合は、以下のように無視されます)
を実行する際に、そのコマンドに形式上のコマンドライン引数ダイアログを表示させることができます。
* C:/Ch/demos/bin/commandarg.c
* "C:/Ch/demos/bin/commandarg.c"
このモードレスの [引数] ダイアログがすでに表示されている場合、'*' は無視されます。
図 19 のプログラムは、コマンドライン引数を伴った
C/Ch/C++プログラム/スクリプトの実行方法を示します。
このプログラムは、コマンドライン引数を受け入れて、これを出力します。
コマンドライン引数は、
図 20
および 図 21
のように、[ツール] → [コマンドライン引数] メニューで設定されます。
このコマンドライン引数を伴ったプログラムの実行結果は、
図 22 のようになります。
図 19: コマンドライン引数を扱うプログラム
図 20: コマンドライン引数の設定
図 21: コマンドライン引数の設定
図 22: コマンドライン引数を伴ったプログラムの実行結果
C/Ch/C++ プログラムのデバッグ
ChIDE は、バイナリCプログラム用の典型的なデバッガで利用可能なすべての
機能を備えています。「開始」と「シングルステップ」のようなデバッグ
インターフェースコマンドは、
図 20 のようになっています。
図 23: [デバッグ] メニュー
これらは、図 24 のように、デバッグバー上で直接
使用することもできます。
デバッグ中の任意の時点で使用可能なデバッグバー上のコマンドは、クリック可能になっています。
クリックできないコマンドは、グレーアウトされています。
図 24: ブレークポイントの設定
デバッグモードでは、[開始] コマンドまたはファンクションキーF5により、編集ウィンドウ内のプログラムを実行することができます。
プログラムの実行は、ブレークポイントにヒットすると停止します。
プログラムを1行ずつ実行するには、[シングルステップ] またはファンクションキーF6を使用します。
[シングルステップ] コマンドは関数の中にステップインします。一方、[次へ] またはファンクションキーF7は
関数をステップオーバーして、次の行を実行対象にします。
デバッグ中に [続行] コマンドをクリックすると、プログラムは、
ブレークポイントにヒットするか、あるいは最後まで実行されます。
プログラムの実行前またはデバッグ中に、新規のブレークポイントを追加して、
これにヒットしたときにプログラムの実行を停止させるようにすることができます。
ある行に対するブレークポイントは、図 24 のように、
その行の左余白([表示] → [余白] をクリックして表示させる)をクリックして設定します。
このブレークポイントを解除するには、この行の左マージンにある赤い丸印をクリックします。
デバッガのブレークポイントは、図 24 のように、
デバッグウィンドウの上のデバッグウィンドウ選択バーの
[ブレークポイント] タブをクリックして、調べることができます。
デバッグウィンドウは、各ブレークポイントに対するブレークポイント番号とその場所を表示します。
現在の行に対するブレークポイントは、[ブレークポイントを設定] コマンド
をクリックしても設定可能です。
これを解除する方法として、[ブレークポイントを解除] コマンドを選択することもできます。
ブレークポイントが何も設定されていない場合、
コマンド [ブレークポイントを解除] はクリックできないようになっています。
しかしながら、ブレークポイントは以下のような初期化をともなう宣言文には設定できません。
int i = 10;
実行中およびデバッグ中のプログラムを編集すべきではありませんが、
あえてそうしようとすると、警告メッセージ
「警告:デバッグ中にこのファイルに加えられた変更は
現在のデバッグセッションには反映されません。」
が表示され、そのプログラムの実行が終了し、編集可能になります。
コードの追加/削除によりプログラムが編集されると、
そのプログラムに対するブレークポイント設定が自動的に更新されます。
[シングルステップ] コマンドは、ある関数の中へのステップインに使用されます。
その関数がすでにバッファ内にロードされているファイルの中にない場合、
その関数を含むファイルがロードされます。
プログラムの実行の最後に、デバッグ中にロードされたそのファイルがバッファから削除されます。
しかしながら、ブレークポイントがそのロードされたファイルに設定されている場合、
プログラムの実行が終了しても、そのファイルはバッファ内にとどまります。
デバッグウィンドウ内で [debug] コマンドを用いると、
あとで説明されているように、ブレークポイントを関数と変数制御に対して設定することもできます。
デバッグモードでプログラムが実行されると、標準入出力とエラーストリームが、
図 25 のように、独立した [Debug Console Window] にリダイレクトされます。
既定では、このコンソールウィンドウは常に他のウィンドウの上に表示されます。
この既定の動作は、[表示] → [Debug Console Windowを常に最前面に表示] コマンド
により、オン/オフの切り換えを行うことができます。
このコンソールウィンドウは、[表示] → [Debug Cosole Window] コマンド
により、開いたり閉じたりすることができます。
このコンソールウィンドウの内容をクリアするには、
[表示] → [Debug Console Windowを消去] コマンドを使用します。
この「コンソールウィンドウ」のウィンドウおよびフォントサイズはもちろん、
背景と文字の色は、このウィンドウの左上隅の ChIDE アイコンを右クリックし、
[プロパティ] メニューを選択して変更することができます。
なおWindows Vista上でこのような変更を行う場合、ChIDEを管理者権限で実行する必要があります。
図 25: デバッグ時の入出力用 Debug Console Window
プログラムの実行が失敗し、終了に非常に時間がかかる場合、[中断] コマンド
を用いてこのプログラムを停止することができます。
[シングルステップ] または [次へ] コマンドにより、プログラムが1行ずつ実行された場合、
現在のスタック内の変数名とその値は、デバッグウィンドウ選択バーの [ローカル変数] タブ
をクリックすることにより、調べることができます。
プログラムの実行制御が関数内にあるときに、[locals] コマンドを入力すると、
その関数のローカル変数と引数の値が表示されます。
プログラムの実行制御がスクリプトの関数内にないときに、[locals] コマンドを入力すると、
そのプログラムのグローバル変数の値が表示されます。
図 26 のように、
CHHOME/demos/bin ディレクトリにあるプログラム func.c が
9行目を実行対象にし、緑色でハイライトされているとき、
ローカルの整数 i と n は 1 と 10 に、一方double型の配列 a は、1、2、3、4、5を含んでいます。
図 26: 現在呼び出されている関数内のローカル変数名と値の表示
デバッグ中に関数スタックを変更することができます。
このスタックは、そのスコープ内の変数がデバッグウィンドウ内で表示されるか、
またはデバッグコマンドウィンドウ内でアクセスされるように、
呼び出し関数の [上へ] 移動するか、または呼び出された関数の [下へ] 移動することができます。
現在の行と呼び出し関数の実行行のハイライト用に異なる色が使用されます。
たとえば、図 26 で [上へ] コマンドをクリックすると、
プログラムの制御フローは、図 27 で青色にハイライトされているように、
呼び出し関数 main() の15行目に移動します。
図 26 では、[下へ] メニューはクリック不可になっていますが、
このメニューは、現在のスタックが上に移動させられた際、
図 27 ではクリック可能になっています。
この時点でのデバッグウィンドウは、唯一の定まった変数である、呼び出し関数main()内の変数 i の名前と値を表示します。
図 27: 呼び出し関数内のローカル変数名と値の表示
デバッグウィンドウ上部の [スタック] タブは、各スタック内の、
関数、メンバ関数、またはプログラム名および対応するスタックレベルを表示します。
たとえば 図 28 に示されているように、関数func()は、
C:\Ch\demos\bin\func.c ディレクトリにあるプログラム func.c により起動された
関数main()により、呼び出されます。
図 28: 実行点に対する異なるスタックの表示
全スタック内の変数名の名前とその値は、デバッグウィンドウ選択バーの [変数] タブ
で、図 29 のように表示されます。
スタックレベルは、図 27 で示されているように、
編集ウィンドウ内の現在の行と呼び出し関数の実行行に対応した色でハイライトされます。
図 29では、プログラムは9行目で停止します。
関数func()とmain()内のグローバル変数はもちろん、
ローカル変数の名前と値もデバッグウィンドウ内に表示されます。
おわかりのように、9行目の実行前のグローバル変数 g の値は 200 になっています。
図 29: 全スタック内のすべての変数の名前と値の表示
図 23 で表示されている、[デバッグ] メニュー内の
コマンド [デバッグウィンドウに特別な変数の値を表示する] をクリックすると、
__func__ のような特殊な変数の名前と値がデバッグウィンドウの [ローカル変数] と [変数] タブ
内に表示されます。
デバッグコマンドウィンドウ内での [debug] コマンドの使用
プログラムのデバッグ中には、デバッグコマンドウィンドウ内の多くのデバッグコマンドが
使用可能です。デバッグウィンドウ上部の [コマンド] をクリックすると、デバッグコマンドウィンドウ内に
プロンプト
debug>
が表示され、デバッガがデバッグコマンドを受け付け可能になったことを示します。
[help] コマンドを入力すると、図 27 のように、
使用可能なすべてのコマンドが表示されます。
図 30: デバッグウィンドウ上のデバッグコマンド
コロン(:)の左側のメニューはコマンドを示し、その右側は
そのコマンドの動作について説明しています。
デバッグコマンドウィンドウ内では、デバッグバー上の全コマンドを使用することができます。
さらに、デバッグコマンドウィンドウ内でしか使用できない機能がいくつかあります。
変数、式、および関数は、[assign]、[call]、[print] コマンドで扱われます。
[assign] コマンドは値を変数に割り当て、[call] は関数を起動し、
[print] は変数または関数を含む式の値を出力します。
void型の式を出力することは、void型を返す関数の場合も含めて、無効な操作です。
式をタイプするだけで、その式の値が表示されます。
その式がvoidの型を返す関数である場合、その関数のみが呼び出されます。
たとえば、コマンド
debug> assign i=2*10
debug> call func()
debug> print i
20
debug> 2*i
40
debug>
は、変数 i に値 10 を割り当て、関数func()を呼び出し、
変数 i がそのスコープ内で有効な場合には、式 2*i の値を出力します。
他の例として、図 31 のように、プログラム func.c が
実行され、9行目で停止した場合、式 2*g とともに変数 a と i の値は、
デバッグコマンドウィンドウ上で対応するコマンドを入力することにより、表示されます。
図 31: デバッグコマンドウィンドウ内でのデバッグコマンドの使用
[start] コマンドは、プログラムのデバッグを開始します。
[start] と [run] コマンドのオプションの引数は処理されて、
main()関数に対する引数に渡されます。
たとえば、図 22 のプログラム
C:\Ch\demos\bin\commandarg.cを実行するため、デバッグコマンド
debug> start -o option1 -v option2 "option3 with space"
は、文字列
"C:\Ch\demos\bin\commandarg.c"、"-o"、"option1"、"-v"、"option2"、および "option3 with space"
を、Chスクリプト commandarg.c のmain関数
int main(int argc, char *argv[])
の引数 argv のエレメント
argv[0]、argv[1]、argv[2]、
argv[3]、argv[4]、および argv[5]
にそれぞれ割り当てます。
[Debug Console Window] の出力は、図 22 のアウトプットウィンドウ
に表示された内容と同様です。
空白文字を含んだオプションの引数は、上記の文字列 "option3 with space" のように
二重引用符で囲む必要があります。
プログラムはブレークポイントにヒットすると停止します。
[run] コマンドを入力すると、プログラムは、ブレークポイントを無視し、
デバッグされることなしに実行されます。
[step] または [next] コマンドにより、デバッグバー上のコマンドと同様に、
プログラムを1行ずつ実行することができます。
[step] コマンドは、関数にステップインし、一方 [next] コマンドは、
関数をステップオーバーして次の行を実行対象にします。
デバッグ中に [cont] コマンドを起動して、プログラムをブレークポイントに
ヒットするか、または最後まで実行させることができます。
デバッグ中に関数スタックを変更することが可能です。
[up] および [down] コマンドにより、関数スタックのスコープ内の変数に
デバッグコマンドウィンドウ内でアクセスできるように、
それぞれ関数スタックを、その呼び出し関数の上に移動させるか、
または呼び出された関数の下に移動させることができます。
すべてのスタック内の関数またはプログラム名を表示させるには、[stack] コマンドを使用します。
現在のスタック内の変数の名前とその値を表示させるには、[locals] コマンドを使用します。
[variables] コマンドを入力すると、各スタック内のスコープにあるすべての変数の
名前と値が表示されます。
[watch] コマンドは、シングル変数を含む式をウォッチ式のリストに追加します。
ウォッチ式は、プログラムの実行前にも実行中にも追加することが可能です。
[remove expr] コマンドを使用すると、ウォッチ式のリストから式を削除することができます。
また、[remove] コマンドは、ウォッチ式リスト内のすべての式を削除します。
たとえば、デバッグコマンドウィンドウ内で以下のコマンド
debug> watch 2*g
debug> watch i
を実行すると、図 32 のように、
式 2*g と変数 i がウォッチ式のリストに追加されます。
図 32: デバッグコマンドウィンドウ内でウォッチ式と変数を設定し、その値をデバッグウィンドウ内に表示
プログラムがブレークポイントで停止するか、または次のステートメントにステップイン
すると、デバッグウィンドウ選択バーの [ウォッチ] タブをクリックすることにより、
図 32 のように、
これらのウォッチ式の値がデバッグウィンドウ内に表示されます。
プログラム実行前またはデバッグ中に、新規のブレークポイントを追加して、
プログラムの実行を停止させることができます。
ブレークポイントは、次の3項目の指定、すなわち、
ファイル名と行番号、関数、および制御変数、により設定されます。
ブレークポイントが関数内に設定されると、プログラムは関数の最初の実行可能な行
で停止します。ブレークポイントが変数に対して設定されると、
プログラムは、その変数値が変更されたときに停止します。
各ブレークポイントには、オプションの条件式があります。
ブレークポイントの場所に到達すると、条件式があればその条件式が評価されます。
ブレークポイントは、式(ブレークポイント設定時に指定する必要があります)
が真かまたは変更された場合のみ、ヒットします。
既定では、ブレークポイントは、式が真の場合のみヒットします。
[stopat] コマンドは、引数としてファイル名と行番号を指定することにより、
新規のブレークポイントを設定します。
プログラムがこの場所に到達すると、実行が停止されます。
[stopin] コマンドは、関数に対して新規のブレークポイントを設定します。
プログラムがこの関数の最初の実行可能行に到達すると、実行が停止されます。
[stopvar] コマンドは、制御変数に対して新規のブレークポイントを設定します。
この変数は、プログラム実行中に評価されます。
プログラムは、この変数の値が変更されると、実行を停止します。
これらのコマンドのいずれかが起動されると、ブレークポイントがブレークポイント
リストに追加されます。各ブレークポイントに対するオプションの条件式とトリガ手段は、
これらのコマンドの最後の2つの引数として渡されます。
たとえば、ブレークポイントを完全なパスと行番号を用いて、ファイル内に設定
する場合は、以下のようになります。
debug> stopat filename #
debug> stopat filename # condexpr
debug> stopat filename # condexpr condtrue
ブレークポイントの場所に到達すると、オプション式 [condexpr] が評価されます。
引数 [condtrue] が真であるか、またはない場合、
ブレークポイントは、この式の値が真である場合にヒットします。
そうでない場合、ブレークポイントは、この式の値が変更された場合にヒットします。
たとえば、コマンド
debug> stopat C:/Ch/demos/bin/func.c 6
は、C:/Ch/demos/bin ディレクトリにあるファイル func.c 内の
6行目にブレークポイントを設定します。
コマンド
debug> stopat C:/Ch/demos/bin/func.c 6 i+j 1
も、ファイル func.c の6行目にブレークポイントを設定しますが、次のような違いがあります。
すなわち、ファイル func.c の6行目の位置のブレークポイントに到達すると、
式 i+j が評価され、この式の値が真のときに、ブレークポイントがヒットします。
上記の式は、以下の式と同等です。
debug> stopat C:/Ch/demos/bin/func.c 6 i+j
コマンド
debug> stopat C:/Ch/demos/bin/func.c 6 i+j 0
もやはりファイル func.c の6行目にブレークポイントを設定します。
この場合、ファイル func.c の6行目の位置のブレークポイントに到達すると、
式 i+j が評価され、この式の値が変更されたときに、ブレークポイントがヒットします。
逆に、適切な引数をともなって、コマンド
[clearline]、
[clearfunc]、および
[clearvar]
を実行すると、リスト内のそれぞれ、行、関数、および変数型が削除されます。
[clear] コマンドは、デバッガ内のすべてのブレークポイントを削除します。
プログラムの実行が失敗し、終了に時間がかかり過ぎる場合は、
[abort] コマンドを用いて、プログラムを停止させることができます。
デバッグコマンドウィンドウの内容は、[表示] → [デバッグコマンドウィンドウを消去] コマンド
をクリックすることにより、消去できます。
アウトプットウィンドウ内でのコマンドの対話的実行
バイナリコマンドおよびC/C++プログラムは、図 33 に示されるように、
アウトプットウィンドウ内部でも対話的に実行することができます。
図33において、
プログラムhello.cがアウトプットウィンドウ内で最初に実行されます。
次に、コマンド [pwd] は、
カレントワーキングディレクトリを表示します。
コマンド [ls] は、カレントワーキングディレクトリ内のファイルとディレクトリの一覧を表示します。
コマンドのオプションも使用可能です。たとえば、コマンド [ls] は
ls -F
の書式で実行可能であり、ディレクトリを最後にスラッシュ付きで一覧表示します。
空白文字を含む完全なパスをともなうコマンドを使用するには、以下のように、
そのパスを二重引用符で囲む必要があります。
"C:/Documents and Settings/Administrator/c99/hello.c"
図33: アウトプットウィンドウ内でのコマンドの実行
C/C++プログラムのコンパイルとリンク
ChIDEは、編集ウィンドウ内の編集済みのC/C++プログラムを、CおよびC++
コンパイラを用いてコンパイル、リンクすることもできます。
既定では、ChIDEは、Windows上にインストールされている最新の
Microsoft Visual Studio .NETをCおよびC++プログラムのコンパイルに使用します。
Visual Studioコンパイラ用の環境変数とコマンドは、ユーザのホームディレクトリにあり、
図 12 のメニューで開いて編集できる、
別個のスタートアップ構築ファイル _chrc 内で修正可能です。
Linux上では、ChIDEは、CおよびC++プログラムのコンパイルに、
それぞれgccおよびg++コンパイラを使用します。
既定のコンパイラは、[オプション] メニュー内のコマンドで開くことができる
C/Ch/C++プロパティファイル cpp.properties を編集することにより変更可能です。
図 34 で表示されている、[ツール] → [コンパイル]
コマンドは、プログラムのコンパイルに使用することができます。
CまたはC++プログラムのコンパイル時に発生したエラーメッセージは、
ChIDEのアウトプットウィンドウ内に表示されます。
Windows上では、プログラムをコンパイルすると、拡張子 .obj をもった
オブジェクトファイルが生成されます。
このオブジェクトファイルは、
[ツール] → [リンク] コマンドを用いてリンクされ、
実行可能なプログラムが作成されます。
Windows上で実行可能なプログラムは、拡張子 .exe をもちます。
図 34: C/C++ プログラムのコンパイル
カレントディレクトリ上でmakeファイルmakefileまたはMakefileが使用可能であれば、
[ツール] → [ビルド] コマンドを実行する
ことにより、Makefileが起動されて、アプリケーションがビルドされます。
makeファイルは、ファイルタブ上のファイル名を右クリックし、
図 35 のように、
コマンドmake(Linux またはMac の場合)、
またはコマンドmake あるいはnmake(Windows の場合)
をクリックすることによっても起動することができます。
Figure 35: C/C++プログラムをコンパイルするためのmakeファイルの使用
ChIDEがmakeファイルの編集に使用される際には、その書式がハイライト表示されます。タブ文字は、あるmakeコマンドに対してはコマンドを開始する特殊文字として予約されていますので、
この文字は保護され、空白文字では置き換えられません。
ファイル拡張子 .mak をもつファイル、
または以下の名前のファイルは、ChIDEではmakeファイルとみなされます。
makefile
makefile.win
makefile_win
makefile.Win
makefile_Win
Makefile
Makefile.win
Makefile_win
Makefile.Win
Makefile_Win
[ツール] → [実行] コマンドを実行する
ことにより、開発された実行可能プログラムが実行されます。
ChIDE におけるバッファ
ChIDEには、それぞれがファイルを含んだ既定で20個のバッファがあります。
既定のバッファ数はユーザーオプションファイルで変更可能です。
ファイル名を選択するか、または
[ウィンドウ] → [前] および [ウィンドウ] → [次] コマンドを使用するかのいずれかの方法により、
[ウィンドウ] メニューを使用して各バッファを切り換えることができます。
全バッファがファイルを含んでいる場合に新規のファイルを開くと、
ファイルの保存が要求可能なバッファが再利用されます。
このケースではアラートが表示され、ユーザにこのファイルの保存を促します。
ChIDE におけるセッション
セッションとは、ファイル名とChIDEに対するいくつかのオプションのリストです。
現在開いているバッファのすべてを、
将来の迅速なバッチロードのためにセッションとして保存することができます。
セッションは、拡張子 ".session" をもったプレーンテキストファイルとして保存されます。
セッションをロードまたは保存するには、[ファイル] → [セッションをロード]
または [ファイル] → [セッションを保存] を使用します。
ChIDEのプロパティ変数 "save.session" を用いて、
「自動的にロードした最後のセッション」をオンまたはオフにすることができます。
既定では、セッション管理はオンになっています。
直前に保存されたセッションをロードすると、現在開いているバッファ
が閉じられます。しかしながら、この場合には保存していないバッファを
最初に保存するように促されますので、編集内容が破棄されることは避けられます。
コマンドラインから特定のファイルを開くと、"save.session" 変数
の状態が上書きされます。ChIDE上で、
コマンドラインからの特定のファイルのロードを開始する際には、
"save.session" 変数が "1" に設定されていても、最後のセッションには戻りません。
これにより、"save.session" を安全に使用することができます。
すなわち、ただ1つの特定のファイルを開こうとする際に、2つのファイルを
開くようなことは決してありません。
ChIDEで解釈可能な文書
ChIDEは現在のところ、以下の文書に対して、書式のスタイリングが可能です
(* は折りたたみ表示に対応していることを示しています)。
- C/Ch/C++*
- CSS*
- HTML*
- Make
- SQL および PLSQL
- TeX および LaTeX
- XML*
文書の設定は、ファイルの拡張子から決定されますが、この設定は [言語向き表示]
メニューから他の文書を選択することにより、変更可能です。[言語向き表示]
メニューは、menu.language プロパティを用いて変更することができます。
ChIDEにおける編集
Microsoft Wordのようなほとんどのワードプロセッサにおける機能が、
ChIDEで使用可能です。ツールバー上のメニューと [編集] メニューのコマンド
を編集ウィンドウ内でのプログラムの編集に使用することができます。
編集ウィンドウ内で右クリックしても、図 36
のように、よく用いられる編集コマンドが表示されます。
図 36: 編集ウィンドウ上での右クリックにより、編集コマンドを使用
ユーザーが編集ウィンドウ内にテキストを入力する際、
入力された文字列が編集しているファイル内にある単語と合致していると、
その合致している単語が表示されます。
ユーザーはEnterキーを押すことにより、
その合致した単語の入力を自動的に完了することができます。
しかしながらユーザーは、Ctrl+Enterを押して合致している単語をすべて表示させ、
矢印キーを用いて単語を選択し、そしてEnterを押してそれを入力することもできます。
ChIDE における検索と置換
ChIDEは、単語、正規表現、大文字/小文字の区別、検索方向、文書の最後まで、
の検索が可能なオプションを備えています。
コマンドライン引数セクションの一覧にあるCスタイルのバックスラッシュの
エスケープは、制御文字の検索および置換に使用することができます。
置換は、現在の選択範囲または文書全体にわたって個別に行うことが可能です。
正規表現を使用すると、タグ付きの副表現をテキスト置換に使用することができます。
正規表現は、行末を越えてヒットすることはありません。
ChIDEは、
タグ付きの基本正規表現
に対応しています。
ChIDE におけるキーボードコマンド
ChIDEは、Scintillaで定めた既定のキーバインディングを使用しています。
したがって、ChIDEにおけるキーボードコマンドは、共通のWindowsおよび
GTK+規則にほとんど準拠しています。
すべての移動キー(矢印、Page Up/Down、Home、End)に対して、
Shiftキーを押した際のストリーム選択、
およびShiftとAltキーを押した際の長方形領域選択の切り換えが可能です。
いくつかのキーは、GTK+でのウィンドウマネージャなどのようなシステムに取られているために、
あるローカルキーボードでは使用できないことがあります。
user.shortcuts 設定を使用すると、キーに機能を割り当てることができます。
Homeキーの動作は、vc.home.key オプションにより変更されることに注意してください。
メニューコマンドのキーボードショートカットは、メニュー内に記載されています。
以下の表は、よく使用されるコマンドとそれに対応するキーボードコマンドの一覧を示しています。
ヘルプ情報の参照 | F1 |
Ch上でC/Ch/C++プログラムを実行 | F2 |
次の検索文字列 | F3 |
前の検索文字列 | Shift+F3 |
次のエラーメッセージ | F4 |
前のエラーメッセージ | Shift+F4 |
(プログラムのデバッグを)開始 | F5 |
シングルステップ実行 | F6 |
次のステートメントをステップオーバーして実行 | F7 |
アウトプットウィンドウを閉じる/開く | F8 |
アウトプットウィンドウを消去 | F9 |
デバッグコマンドウィンドウを閉じる/開く | F10 |
Debug Console Windowを閉じる/開く | F11 |
全画面表示 | F12 |
メニューショートカットをもたない、あまり一般的でない、コマンドは以下のとおりです。
テキストサイズを拡大 | Ctrl+キーパッド+ |
テキストサイズを縮小 | Ctrl+キーパッド- |
テキストを通常のサイズに戻す | Ctrl+キーパッド/ |
開いているファイルを順に選択 | Ctrl+Tab |
ブロックを挿入 | Tab |
ブロックを削除 | Shift+Tab |
単語の先頭まで削除 | Ctrl+BackSpace |
単語の最後まで削除 | Ctrl+Delete |
行の先頭まで削除 | Ctrl+Shift+BackSpace |
行の最後まで削除 | Ctrl+Shift+Delete |
文書の先頭に移動 | Ctrl+Home |
文書の先頭まで選択 | Ctrl+Shift+Home |
表示行の先頭に移動 | Alt+Home |
表示行の先頭まで選択 | Alt+Shift+Home |
文書の最後まで移動 | Ctrl+End |
文書の最後まで選択 | Ctrl+Shift+End |
表示行の最後に移動 | Alt+End |
表示行の最後まで選択 | Alt+Shift+End |
表示の展開と折りたたみの切り換え | Ctrl+キーパッド* |
ブックマークの作成または削除 | Ctrl+F2 |
次のブックマークまで選択 | Alt+F2 |
選択項目を検索 | Ctrl+F3 |
選択項目を後方に検索 | Ctrl+Shift+F3 |
スクロールアップ | Ctrl+Up |
スクロールダウン | Ctrl+Down |
行の切り取り | Ctrl+L |
行のコピー | Ctrl+Shift+T |
行の削除 | Ctrl+Shift+L |
直前の行と順序を入れ替え | Ctrl+T |
行を複製 | Ctrl+D |
合致するプリプロセッサ条件を検索し、ネストされている部分をスキップ | Ctrl+K |
合致するプリプロセッサ条件まで選択 | Ctrl+Shift+K |
合致するプリプロセッサ条件を後方に検索し、ネストされている部分をスキップ | Ctrl+J |
合致するプリプロセッサ条件まで後方に選択 | Ctrl+Shift+J |
直前のパラグラフ。Shiftキー併用でその個所まで選択 | Ctrl+[ |
次のパラグラフ。Shiftキー併用でその個所まで選択 | Ctrl+] |
直前の単語。Shiftキー併用でその個所まで選択 | Ctrl+Left |
次の単語。Shiftキー併用でその個所まで選択 | Ctrl+Right |
直前の単語部分。Shiftキー併用でその個所まで選択 | Ctrl+/ |
次の単語部分。Shiftキー併用でその個所まで選択 | Ctrl+\ |
ChIDEにおける省略表現
省略表現を使用するには、これを入力し、[編集] → [省略表現を展開] コマンドまたは
Ctrl+Bキーを用います。省略表現は、「省略表現ファイル」で定義されている
拡張表現と置き換えられます。「省略表現ファイル」を [オプション]
メニュー内のコマンドを用いて開き、これに省略表現を追加することが可能です。
このファイル内の各行は、"abbreviation=expansion" のようになっています。
省略表現名には、拡張ASCII文字(アクセント文字)も含む任意の文字(CRとLFは除きます。
その他の制御文字も避けてください)を使用することができます。
ファイル名には、propertiesファイルと同じ制限があります。すなわち、シャープ(#)、
空白、タブで始まることはできません(ただし、ファイル名中に空白を入れることはできます)。
また、ファイル名中に '=' を含むことはできません。
省略表現名は、32文字以内でなければなりません。
もっとも「省略表現」ということですから、この文字数で十分であると思いますが...
拡張コードとして、改行コードを '\n' で、カーソル位置を '|' で表すことができます。
'|' 文字を入力するには、'||' を使用します。
展開する際に、その名前を直前のテキストと区切る必要はありません。
すなわち、'.' を 'é' として定義している場合、これを単語内で展開することができます。
ある名前が別の名前の最後の部分と同じである場合、より短い名前のみが展開されます。
すなわち、'ring' と 'gathering' を定義した場合、'ring' の部分のみが展開されます。
C/C++の記述用のグローバルな省略表現は、
コマンド [オプション] → [グローバル省略表現ファイルを開く]
で開くことができます。このグローバル省略表現はユーザー省略表現により、上書きされます。
ユーザー省略表現ファイルは、
コマンド [オプション] → [ユーザー省略表現ファイルを開く]
で開くことができます。
グローバルなプログラミング省略表現は、プログラムの入力とインデント設定
を迅速に行う目的で使用することができます。
C/C++プログラム記述用に、以下のグローバル省略表現が定義済みとなっています。
省略表現 | 説明 |
com | /* | */ |
inc | #include <|> |
myinc | #include "|" |
def | #define | |
| |
main | main() 関数 |
mainarg | 引数をもつ main() 関数 |
| |
if | if ステートメント |
elseif | else if ステートメント |
else | else ステートメント |
for | for ループ |
while | while ループ |
do | do-while ループ |
switch | switch ステートメント |
foreach | foreach ループ |
| |
a | 配列インデックス用の [|] |
c | 文字データ用の '|' |
s | 文字列用の "|" |
p | カッコ (|) |
| |
pi | M_PI| |
epsilon | FLT_EPSILON| |
cond | | ? : 条件演算子 |
sizeof | sizeof(|) |
| |
struct | struct |
union | union |
enum | enum |
class | class |
| |
stdlib.h | include stdlib.h |
time.h | include time.h |
assert.h | include assert.h |
complex.h | include complex.h |
ctype.h | include ctype.h |
errno.h | include errno.h |
fenv.h | include fenv.h |
float.h | include float.h |
inttypes.h | include inttypes.h |
iso646.h | include iso646.h |
limits.h | include limits.h |
locale.h | include locale.h |
math.h | include math.h |
setjmp.h | include setjmp.h |
signal.h | include stdarg.h |
stdarg.h | include stdarg.h |
stdbool.h | include stdbool.h |
stddef.h | include stddef.h |
stdint.h | include stdint.h |
stdio.h | include stdio.h |
stdlib.h | include stdlib.h |
string.h | include string.h |
tgmath.h | include tgmath.h |
time.h | include time.h |
wchar.h | include wchar.h |
wctype.h | include wctype.h |
chdl.h | include chdl.h |
chplot.h | include chplot.h |
chshell.h | include chshell.h |
numeric.h | include numeric.h |
| |
func | 関数定義 |
prot | 関数プロトタイプ用の |(); |
call | 関数呼び出し用の |(); |
| |
printf | printf("|\n"); |
scanf | scanf("|", &); |
sin | sin(|) |
標準関数名 | 標準関数の呼び出し |
ひとつの例として、省略表現 hw が既定のユーザー省略表現ファイル
内に含まれています。
この省略表現 hw を入力して Ctrl+B キーを押すと、
図 37 のような
ホームワーク用のテンプレートソースが編集ウィンドウ内に追加されます。
コマンド [オプション] → [ユーザー省略表現ファイルを開く]
により、このユーザー省略表現ファイルを編集して、
授業またはプロジェクトに関連した名前と情報で省略表現 hw
を構築することができます。
図 37: 省略表現 hw を使用してホームワーク用のテンプレートを作成
ChIDE における折りたたみ表示
ChIDEは、多くの種類の文書(詳細については、「ChIDEで解釈可能な文書」の一覧を参照)
に対して、折りたたみ表示をサポートしています。
折りたたみポイントは、Cに対してはインデント、他の文書に対してはかっこ
のカウントに基づいています。
折りたたみポイントのマーカーをクリックすると、
展開と折りたたみの状態を切り換えることができます。
折りたたみ余白内で Ctrl+Shift+クリックを行うと、
最上位レベルの展開と折りたたみが実行されます。
折りたたみの切り換えを行い、同じ操作をすべての子の階層に対して行うには、
Ctrl+クリックを折りたたみポイントで実行します。
すべての子の階層を表示するには、Shift+クリックを折りたたみポイントで実行します。
ChIDE におけるエンコーディング
ChIDEは、Byte Order Mark (BOM) で始まるUnicodeファイルで使用されている
エンコーディングスキームを自動的に検知します。
UTF-8とUCS-2エンコーディングは、リトルエンディアンとビッグエンディアンの両方のUCS-2
も含めて認識可能です。
UTF-8ファイルが最初の2行いずれかにcoding cookieを含んでいる場合、このファイルもまた認識可能です。
coding cookieは、"coding: utf-8" ("coding" に ':' または '=' が続き、オプションで
空白、引用符、"utf-8") に類似していて、通常次のようなコメントに含まれています。
# -*- coding: utf-8 -*-
XMLでの宣言は、以下のようになります。
<?xml version='1.0' encoding='utf-8'?>
その他のエンコーディングに対しては、code.page と character.set プロパティを設定してください。
(注)
ChIDE は、Embedded Ch および Scintilla/SciTE を用いて開発されています。
Scintilla/SciTE の著作権(1998-2003)は、Neil Hodgson が所有しています。
完全な Scintilla/SciTE ライセンスは、Chインストールディレクトリ内の
license_Scintilla に含まれています。
|