[[BORLAND C++ CWCC]]
RETURN
CWCC#04 CWCC Alpha Revision
とりあえず、現行の進行計画から,
α版:Version 0.2.x 現行の問題点から、直ぐにでも修正出来る項目を盛り込んだもの
α1版:Version 0.3.x クラス化+α
α2版:Version 0.4.x グラフィックウインドウ+α
β版:Version 0.5.x とりあえず、計画に有った全機能の取り込み
正式版: Version 1.0.0 β版のバグFIX版

α版1.01パッケージのダウンロード
ライブラリの版数は、0.2.9

α版を使ったサンプル(分割コンパイルの例)

  • α版での対応項目及び既に実施済みのもの
    • コンパイラの作成(前項参照)
    • CwccPrint→CwccPrintf化(下記参照)
    • YesNo(CwccYesNo)追加
    • 入力ボックスの座標変更(ちょっと難あり)
    • CwccCls(画面クリア)とクリアボタンを追加
    • ファイルの後始末→アプリ終了時にfcloseall()を追加
    • CwccGetchの実装(仮実装)

  • ちょっと難しい項目
    • CwccGetsを連続で使用すると終了出来ない
      どの様な対策を講じても同様になってしまうので、プログラムの設計者の判断に委ねるものとする。
    • CwccPrintの高速化
      現行メールボックスバッファを使用しているので、コピーしてからスレッド修復等をすると、更に遅れる可能性有り。現状のままとする。

  • 未対応項目
    • フォントと色の指定
    • エディットの更新タイミング(ドロップアウト処理)
    • タイマの実装
    • ファイルダイヤログの実装
    • クラス化


  • 可変引数の使用方法
    あまり必要性が無かったので、ず〜〜〜っと昔に勉強したので、忘れていたのだ。例えばprintf()関数の様に、引数が幾つ有るか分からないユーザ関数を定義するには、どうしたら良いのだろうか?
    これには、va_マクロとか、va_list等を使用するのだが、これを本格的に説明すると、一晩掛かるので、今回使用した、簡単な方法を説明する。今回の目的は、CwccPrint()関数を、可変引数にして、CwccPrintf()にする事だったので、可変引数部分を受け取って、目的通りに文字列に変換出来る方法が有れば良かった訳である。これを実現するには、まず、ユーザ関数側の、可変引数の部分を(...)とするのだが、第一引数は確実に存在しなければならないので、第二引数以降を可変とする。この方式さえ抑えておけば、v?printf() (例えば、vsprintf等)の関数を使って、va_listで可変引数を受け取る事が出来るのである。詳しくは、下記例を参照してほしい。尚、このva_listについては、windows.hにも宣言されているので、特別に、別のインクルードファイルを追加する必要は無い。

    例)
    #include <windows>
    #include <stdio.h>

    char buff[256] ;

    void coolprintf(char *format,...)
    {
      va_list ap ;
      va_start(ap,format) ;
      vsprintf(buff,format,ap) ;
      va_end(ap) ;
    }

    void main(void)
    {
      int i ;
      for(i=0 ; i<100 ; i++){
       coolprintf("test %d\n",i) ;
       printf(buff) ;
      }
    }
2002/05/01
HomeSweetHome2
Ozzy's Software