はじめるために

Open Watcom C/C++について

Open Watcom C/C++ 1.7開発環境へようこそ。Open Watcom C/C++は、従来Sybase、Powersoft、そしてオリジナル版としてWATCOM International Corpより発売されていた商用コンパイラに取って代わる、オープンソースの製品です。

Open Watcom C/C++のバージョン1.7は、プロフェッショナルの最適化されたマルチプラットフォーム対応CおよびC++コンパイラと各種開発ツールを統合した環境です。これを使えば、DOS用の16ビットおよび32ビットアプリケーション、Novell NLMs、16ビットOS/2、32ビットOS/2、Windows 3.x、Windows 95/98/Me、Win32s、そしてWindows NT/2000/XP(Win32)の各種環境における開発とデバッグが行えます。

新しいプログラムと以前の製品に対して加えられた修正についての情報を含むため、本文書全体に目を通してください。


以前のバージョンを利用している方への注意事項!
アプリケーションを再コンパイルする場合は、リリースノートの項を参照してください。


Open Watcom 1.7にて提供される機能

バージョン1.7にはプロの開発者が要求する様々な機能が組み込まれています。

オープンかつ、マルチターゲットな要素を統合した開発環境

統合開発環境(IDE)では、DOSやOS/2 1.x、Windows 3.xのような16ビット環境や、拡張DOS、Novell NLMs、OS/2、Windows 3.x(Win32s)、Windows 95/98/Me、そしてWindows NT/2000/XPといった32ビット環境に対して、簡単に編集、コンパイル、リンク、デバッグ、ビルドといった作業を行うことを可能とします。プロジェクトは、EXEやDLLを含む多彩な環境に対した構造にできます。IDEはプロジェクトに対して、テキストエディタで閲覧および編集の出来るmakefileを作成します。このIDEは、Windows 3.x、Windows95/98/Me、Windows NT/2000/XP、そして32ビットOS/2環境にて提供されます。

Intel x86環境下における、最大の対応範囲

ホスト環境

ターゲット環境(16ビット)

ターゲット環境(32ビット)

クロスプラットフォーム開発環境

パッケージ内の主要なツールは、クロスプラットフォーム開発を可能とします。それは、開発者にとって、Windows 95/98/MeやWindows NT/2000/XP、そしてOS/2といった、今日の主要な32ビットオペレーティングシステムにおける優れた各種機能を利用できることを意味します。クロスプラットフォームは、ホスト側の開発環境において、異なるターゲット環境に向けた開発を行うことを可能とします。

マルチプラットフォームデバッガ

新しいデバッガは、開発者の生産性を向上させます。新しい機能には、再デザインされたインターフェイス、入り組んだ(ネストした)ファンクションコール内にブレークポイントを設定すること、改善されたC++とDLLのデバッギング、実行ファイルの解読、そして変更可能なインターフェイスが含まれています。Windows 3.x、Windows 95/98/Me、Windows NT/2000/XP、32ビットOS/2では、グラフィカルなデバッガが用意されています。コマンドラインのデバッガは、DOS、Windows 3.x、Windows NT/2000/XP、そして32ビットOS/2にて利用できます。VIDEO愛好者のため、我々はオリジナルデバッガとコマンドラインでの互換性を持たせました。

クラスブラウザ

ブラウザは、視覚的にC/C++アプリケーションにおけるオブジェクトの階層や機能、変数の型、定数を表現できます。

パフォーマンス分析

Open Watcom Execution SamplerとOpen Watcom Execution Profilerは、パフォーマンスを分析するためのツールです。これらは、コード内で頻繁に呼び出される箇所を抽出できるため、そこに開発を集中し、アプリケーションのパフォーマンスを改善することができます。

エディタ

Open Watcom Editorは、構文解析機能を持つソースエディタです。このエディタはWindows 3.x、Windows 95/98/Me、Windows NT/2000/XPのIDEにて提供されます。

グラフィカルな開発環境

Open Watcom C/C++は、グラフィカルな開発ツール群を提供します。これらは、Windows 3.x、Windows 95/98/Me、Windows NT/2000/XPアプリケーションの開発を支援します。開発ツールは、以下の機能を提供します。

リソースエディタ
16ビットおよび32ビットのWindowsアプリケーションのリソースを容易に作成できます。32ビットOS/2のPM開発には、Open Watcom C/C++はIBMのOS/2開発ツールキット(IBMより提供)との相互運用性を提供します。これらのツールは、IDEにシームレスに統合されています。リソースコンパイラは、開発中のアプリケーションにリソースを組み込むことを可能とします
リソースコンパイラ
ソースファイルから、コンパイルしたリソースを作成します。
ズーム
画面上で選択した箇所を強調します。
ヒープウォーカー
テストならびにデバッグのために、メモリの利用状況を表示します。
スパイ
アプリケーションとWindowsの間でやりとりされるメッセージを監視します。
DDEスパイ
システム上で発生するすべてのDDEの活動を監視します。
ドクターワトソン
例外が発生したとき、プログラムとシステムの双方を診断し、プログラムのデバッグを容易にします。この機能は、Windows 3.x、Windows 95/98/Me、Windows NT/2000/XP環境下で実行しているネイティブアプリケーションを監視します。

アセンブラ

このパッケージには、アセンブラが含まれています。これは、マイクロソフトのマクロアセンブラ(MASM)のサブセットと互換性があります。

C++クラスライブラリ

Open Watcom C/C++は、コンテナとストリームクラスライブラリを含んでいます。

無償の32ビットDOSエクステンダ

Open Watcom C/C++は、Tenberry SoftwareのDOS/4GW 32ビットDOSエクステンダを同梱しています。このランタイムは無償で利用でき、最大32Mバイトの仮想メモリをサポートします。

広範なDOSエクステンダのサポート

Open Watcom C/C++では、以下のDOSエクステンダ機能を使ったアプリケーション開発とデバッグを行えます。主要なDOSエクステンダ、Tenberry SoftwareのDOS/4GとPhar Lap's TNT DOSエクステンダです。さらにまた、DOS/32AやFlashTek製DOSエクステンダを利用したアプリケーション開発も行えますが、現在、これらのアプリケーションについてのデバッギングについてはサポート外となっています。

サンプルプログラムとアプリケーション

Open Watcom C/C++には、開発環境を紹介するためのたくさんのサンプルアプリケーションが同梱されています。

テクニカルサポートとサービス

私たちは、我々の製品が設計されたとおりに確実に動作するよう、取り組んでいます。しかしながら、膨大なテストをくぐりぬけてきた本製品においても、ソフトウェアやドキュメントの問題にぶつかるかもしれません。テクニカルサポートは非公式ながらOpen Watcom C/C++ニュースグループを中心に用意されています。詳細については、http://www.openwatcom.org/を参照してください。

すぐに入手できるリソースについて

Open Watcom C/C++は疑問を解決するための豊富なリソースを含んでいます。文書は、始めるための最初の一歩です。製品の各リリースでは、よくある質問に答えるためにマニュアルを更新しています。この情報の大部分はまた、オンラインヘルプを通して参照することもできます。

製品導入先ディレクトリに存在する”README”ファイルには、製品出荷直前の最新情報が記載されています。

良くある質問への回答は、Open Watcomワールドワイドウェブサーバ、http://www.openwatcom.org/に記載されています。

テクニカルサポートへの連絡

テクニカルサポートは、ソフトウェア上の技術的な欠陥を解決する助けとなるために提供されます。すべてのサポートは現在、非公式かつ無償で提供されることに注意してください。以下に、テクニカルサポートと連絡を取る方法を示します。

ニュースグループ
サポートを得る一番簡単な方法は、news://news.openwatcom.org/にてOpen Watcomニュースグループに参加することです。
ワールドワイドウェブ
そのほかに、バグ報告や拡張の依頼をOpen Watcomバグトラッキングシステム、http://bugzilla.openwatcom.org/から投稿することができます。

テクニカルサポートを得るために必要な情報

問題を早く解決するために、より多くの情報をテクニカルサポートへ提出することができます。必須のものは、問題の詳細について、短いサンプルプログラム、問題を再現するための概略手順(コンパイラやリンカのオプションを含む)です。簡潔な問題報告は、テクニカルサポートが素早く問題点を見つけ、解答を提供する助けとなります。ここに、テクニカルサポートが問題を解決するのに役立つ情報を列挙します。

連絡先
氏名および、日中に連絡可能な電話番号とFAX番号をお知らせください。
製品情報
製品名と正確なバージョン名をお知らせください。
ハードウェア構成
どのCPUを利用しているのか(例:インテルPentium 4 2.2GHz)、メモリ容量はいくらか、グラフィックカードおよびビデオメモリの容量についてお知らせください。
ソフトウェア構成
使用しているOSの種類とバージョンをお知らせください
簡潔な問題報告と短いサンプルプログラム
問題の完全な内容と、再現するための手段を用意してください。問題点を含んだ小さなプログラムの見本を、コンパイルとリンクのオプション付きで添付していただければ完璧です。

お薦めの書籍

あなたの質問への解答を手助けする、いくつかの良書や文献があります。以下は、役立つと思われるいくつかの書籍や文献の一覧です。これは、完全な一覧というわけではありません。より多くの情報については、近所の書店に問い合わせてください。

Cプログラマの方へ
The C Programming Language, 2nd Edition
Brian W. Kernighan and Dennis M.Ritchie; Prentice Hall, 1988.
C DiskTutor
L. John Ribar; Osborne McGraw-Hill, 1922.
C++プログラマの方へ
C++ Primer, 2nd Edition
Stanley B. Lippman; Addison-Wesley Publishing Company, 1991.
Teach Yourself C++ in 21 Days
Jesse Liberty; Sams Publishing, 1994.
DOS開発者の方へ
PC Interrupts, Second Edition
Ralf Brown and Jim Kyle; Addison-Wesley Publishing Company, 1994.
Relocatable Object Mudule Format Specification, V1.1
インテルのOMF仕様は、インテルのftpサイトから入手できます。以下にURLを示します。
ftp://ftp.intel.com/pub/tis/omf11g.zip
このZIPファイルはPostscript版のOMF V1.1仕様を含んでいます。
拡張DOS開発者の方へ
Extending DOS-A Programmer's Guide to Protected-Mode DOS, 2nd Edition
Ray Duncan, et al; Addison-Wesley Publishing Company, 1992.
DOS Protected-Mode Interface (DPMI) Specification
DPMI 1.0の仕様は、インテルのftpサイトから入手できます。以下にURLを示します。
ftp://ftp.intel.com/pub/IAL/software_specs/dpmiv1.zip
このZIPファイルはPostscript版のDPMI 1.0仕様を含んでいます。
Windows 3.x開発者の方へ
Microsoft Windows Programmer's Reference
Microsoft Corporation; Microsoft Press, 1990.
Programming Windows 3.1, Third Edition
Charles Petzold; Microsoft Press, 1992.
Windows Programming Primer Plus
Jim Conger; Waite Group Press, 1992.
Widnows NT開発者の方へ
Advanced Windows NT
Jeffrey Richter; Microsoft Press, 1994.
Inside Windows NT
Helen Custer; Microsoft Press, 1993.
Microsoft Win32 Programmer's Reference, Volume One
Microsoft Corporation; Microsoft Press, 1993.
OS/2開発者の方へ
The Design of OS/2
H.M. Deitel and M.S. Kogan; Addison-Wesley Publishing Company, 1992.
OS/2 Warp Unleashed, Deluxe Edition
David Moskowitz and David Kerr, et al; Sams Publishing, 1995.
仮想デバイスドライバ開発者の方へ
Writing Windows Virtual Device Drivers
David Thielen and Bryan Woodruff; Addison-Wesley Publishinhg Company, 1994.

導入

本パッケージは、以下の内容を含んでいます。

ハードウェアおよびソフトウェア要件

Open Watcom C/C++は、最小環境として以下の構成を必要とします。

以上の条件に加えて、以下のどれかのOSが必要となります。

READMEファイルについて

Open Watcom C/C++を導入する前に、CD-ROMのルートディレクトリに格納されている”README”ファイルを読むべきです。そこには有益な、本製品に関する最新情報が記載されています。

Open Watcom C/C++の導入

本バージョンにおける導入プログラムは、いくつかの新しい”気の利いた”機能とともに、すべて再構成されています。以前のバージョンのOpen Watcom C/C++を導入しているならば、Open Watcom C/C++ 1.7を同じパスに導入すべきです(以下に示す内容に該当する場合を除く)。それは以前の導入状況を検証し、以前にどの機能が導入されていたかを調べます。そして、この情報を新しく導入しようとしている製品の標準設定に反映しようとします。もちろん、導入の過程において、機能の追加や削除を行うこともできます。

もし、Open Watcom C/C++またはOpen Watcom FORTRAN 77の製品群のどちらか片方の製品を導入しようとしており、もう片方の製品の旧バージョンをすでに導入しているのであれば、新しい製品を古い製品と同じディレクトリに導入することは推奨しません。Open Watcom C/C++とOpen Watcom FORTRAN 77は、同一バージョンのものと互換性があります。しかしながら、Open Watcom C/C++とOpen Watcom FORTRAN 77はしばしば、異なるバージョンのものとは互換となっています。このような状況においては、二つの製品を使い分けるときの計画をしっかりと立てるように注意してください。PATHやWATCOMといった環境変数は、正しく構成されている必要があります。CONFIG.SYSやSYSTEM.INIといったシステムファイルは、正しく構成されている必要があります。

Open Watcom C/C++ 1.7とOpen Watcom FORTRAN 77 1.7の両方を導入しようとする場合、双方の製品を同一ディレクトリに導入することを推奨します。これは、ファイルが重複することを避け、結果として必要となる総合ディスク容量を減らすことにつながります。二つの製品は、導入先ディレクトリを表すいくつかの環境変数を共用します。もし、導入先ディレクトリを異なるものにすると、問題が発生することがあります。

Open Watcom C/C++ 1.7とOpen Watcom FORTRAN 77 1.7を同一ディレクトリに導入する場合、後から導入する製品に対してどのオプションも選択を外すべきではありません。さもないと、後から導入する製品は、すでに導入されている(そして必要とされている))ファイルを削除してしまうかもしれません。これは、Open Watcom C/C++かOpen Watcom FORTRAN 77のどちらかだけを持っている場合には無用の問題です。この問題は、Open Watcom C/C++とOpen Watcom FORTRAN 77がお互いに、それぞれの製品導入時のオプションを取得できないために起こることです。

以前のバージョンのバックアップを取得したい場合は、Open Watcom C/C++ 1.7の導入前に行ってください。

Open Watcom C/C++ 1.7を、以前のバージョンと異なるディレクトリに導入する場合、導入作業が完了した後にシステムファイル(例:CONFIG.SYS、AUTOEXEC.BAT、SYSTEM.INI)を手動で編集しなければなりません。これは、旧バージョンの環境変数(例:PATH、DEVICE=)を削除するために必要なことです。旧バージョンへのパスより後に新バージョンへのパスが出てくるようになるまで、作業を続けてください。この余計な作業を避けるために、新バージョンを旧バージョンと同一パスへ導入することを推奨します。

以下の例では、いくつかの環境変数と”RUN”文をOS/2のCONFIGY.SYSファイルに修正/追加した様子を示します。旧バージョンのソフトウェアへの参照は、すべて削除されたことを確認してください。

例:

LIBPATH=...;D:\WATCOM\BINP\DLL;...
SET PATH=...;D:\WATCOM\BINP;D:\WATCOM\BINW;...
SET HELP=...;D:\WATCOM\BINP\HELP:...
SET BOOKSHELF=...;D:\WATCOM\BINP\HELP;...
SET INCLUDE=...;D:\WATCOM\H\OS2;D:\WATCOM\H;
SET WATCOM=D:\WATCOM
SET EDPATH=D:\WATCOM\EDDAT
RUN=D*\WATCOM\BINP\NMPBIND.EXE

Open Watcom C/C++を、同じPC上の複数のOSで利用したい場合があるかもしれません。この場合はすべての利用したいOS上で、同じ導入手順を踏んでください。

Windows 3.xで導入を行う場合は、DOS上で導入を行う必要はありません。

OS/2上のWin-OS/2を開発環境に利用しようとする場合、Windows 3.1の導入プログラムを利用しなければなりません(ホストサポートでWindows 3.1を選択してください)。

CD-ROMドライブにCD-ROMのメディアを挿入してください。現在使用しているOSに従って、下記のどれかの手順を実行します。以下では、CD-ROMドライブを”x:”として表します。

DOS
以下のコマンドを入力してください。
x:\setup
Windows 3.x
Windows 3.xを起動し、プログラムマネージャのファイルメニューから”ファイル名を指定して実行”を選択します。以下のコマンドを入力してください。
x:\setup
Windows 95/98/Me
スタートメニューから”ファイル名を指定して実行”を選択し、以下のコマンドを入力してください。
x:\setup
Windows NT/2000/XP
システム環境を変更するのに十分な権限を持つ、”管理者”グループのアカウントでログオンしてください。プログラムマネージャから、”ファイル名を指定して実行”を選択します。以下のコマンドを入力してください。
x:\setup
OS/2
OS/2コマンドプロンプトを開き、以下のコマンドを入力してください。
x:\install

追加導入

Open Watcom C/C++を導入後、最初の導入時に省いた機能を導入したくなる場合があります。また、不要な機能を削除したいと思う場合があるかもしれません。このような場合は、以下の方法に従ってください。

  1. 導入プログラムを起動します。
  2. 新しく導入したい機能を選択します。
  3. 削除したい機能を、非選択します。
  4. 使用しているホストOSの導入プログラムを、再度動かしてください。

システム設定ファイルの修正

導入プログラムはOSの起動ファイルに、Open Watcom C/C++が動作するように修正を加えます。導入プログラムによってシステムの設定ファイルを構成することを強く推奨しますが、手動で編集を行うことも可能です。必要な変更点は、導入したルートディレクトリに作成される以下のファイルを参照してください。

CONFIG.NEW
CONFIG.SYSに必要な変更点(DOS、Windows、Windows 95/98/Me、OS/2)。
AUTOEXEC.NEW
AUTOEXEC.BATに必要な変更点(DOS、Windows、Windows 95/98/Me、OS/2)。
CHANGES.ENV
Windows NT/2000/XPの環境に必要な変更点。

Windows 3.xへ導入するにあたっての注意事項

  1. Windows 3.xで統合開発環境(IDE)を使用する場合、IDEのバッチサーバプログラムがバックグラウンドで動作できるようにすることが重要です。そのために”コントロールパネル”の”386エンハンスド”にある”スケジューリング”で、、”フォアグラウンドでは排他的に実行する”チェックボックスをチェックしないようにしてください。

  2. Windows 3.xでIDEを使用する場合、”SYSTEM.INI”ファイル内の行、

    OverlappedIO=ON
    

    が問題を引き起こすことがあります。これはディスクIOのキューを制御(無効化)し、いくつかのプロセスが終了できるようにDOSボックス間のタイミングに変更を加えます。

  3. Windows 3.xでIDEを使う際、”SYSTEM.INI”ファイルに、

    NoEMMDriver=ON
    

    の行が入らないようにしてください。これは、IDE内でリンクする際の障害となります。

  4. NEC PC-9800シリーズ上のWindows 3.xでIDEを使用する場合、”SYSTEM.INI”ファイル内に、

    InDOSPolling=TRUE
    

    の行が入らないようにしてください。これは、IDE内でmakeする際の障害となります。

  5. Central Point Software社のウィルス対策ソフト(VDEFEND、VSAFE、VWATCH)は、Windows 3.x環境下でIDEと競合を起こします。

  6. プログラムの情報ファイル”BATCHBOX.PIF”は、バックグラウンドでコンパイル、リンク、その他をを行うバッチサーバを起動するためにIDEによって使用されます。このPIFは、”COMMAND.COM”を参照します。もし、”4DOS.COM”のような”COMMAND.COM”互換環境を使用している場合は、それに応じてPIFエディタでPIFファイルを編集しなければなりません。

OS/2へ導入するにあたっての注意事項

  1. IDEは、テキストファイルの編集にIBM OS/2拡張エディタ(EPM)を使用します。このため、IDEの利用を検討しているなら、OS/2環境に確実にEPMが導入されているようにしてください。拡張エディタは、OS/2セットアップと導入プログラム(選択導入)を起動し、”ツールとゲーム”の詳細ページから”拡張エディタ”を選択することで導入できます。

  2. OS/2のUNDELETE機能を利用する限られたメモリを持ついくつかの環境では、OS/2がコンパイラの一時ファイルのコピーを保存するため、コンパイル時間が遅くなることがあります。DELDIRを無効にするとともに、OS/2のSTARTUP.CMDでBATSERVプロセスを起動すると良いでしょう。以下に例を示します。

    SET OLD_DEL_DIR=%DELDIR%
    SET DELDIR=
    DETACH C:\WATCOM\BINP\BATSERV.EXE
    SET DELDIR=%OLD_DEL_DIR%
    SET OLD_DEL_DIR=
    
  3. Open Watcomのデバッガで名前付きパイプリモートデバッギング機能の利用を検討している場合、NMPSERV.EXEプログラムが実行されていなければなりません。これは、OS/2の初期化が行われている最中に、CONFIG.SYSファイルの”RUN=”命令によって起動されるか、DETACHコマンドによって手動で起動する必要があります。

Open Watcom C/C++を触ってみよう

それでは、Open Watcom C/C++の使用を開始して、その機能のいくつかを紹介していきましょう。この章の目的は、実際のアプリケーションを使用しながら簡単にOpen Watcom C/C++の新しいグラフィカルツールを試すことです。

このチュートリアルでは、実際のC++ソースファイルを取り上げ、IDEでプロジェクトを作成し、以下の項目を実施します。

概要

Open Watcomの統合開発環境(IDE)は、プロジェクトの開発を行う際にプログラマーが使うファイルやツールを管理します。これは、ソースファイル、インクルードファイル、ライブラリ、(複数の)コンパイラ、リンカ、プリプロセッサ等、ユーザが使うすべてのものを含みます。

IDEはグラフィカルインターフェイスを持ち、プロジェクトの構成をわかりやすく視覚化します。一つのIDEセッションは、一つのプロジェクトを示します。もしプロジェクトがいくつかの項目、たとえば二つの実行ファイルと一つのライブラリから構成されていたら、これらの項目はおのおのがプロジェクトウィンドウ内のターゲットウィンドウに表示されます。それぞれのターゲットウィンドウは、ターゲットを構成するのに必要なファイルを表示します。そして、ファイルの拡張子を通して生成方法を記述した規則と結びついています。たとえば、”.EXE”拡張子を持つファイルは、32ビットWindowsの実行ファイルを生成する規則と結びついています。また、”.LIB”拡張子を持つファイルは、静的ライブラリを生成する規則と結びついていることでしょう。異なるプロジェクトに、同じターゲットを参照させることも可能です。この場合、そのターゲットは共有され両方のプロジェクトから変更を加えることができ、片方のプロジェクトからの変更はもう一方にも影響を与えます。

IDEそれ自身は複数のプログラムからなり、ターゲットのライブラリや実行ファイルを生成する様々なファイルやツールの管理を行います。それは、ターゲットの記述内にある情報から(複数の)makefileを作成し、ターゲットそれ自身を生成するためにOpen Watcom Makeを起動します。設定ファイルには、Open Watcomコンパイラ、エディタ、プロファイラ、ブラウザについての情報が、それらすべてのオプションスイッチと同様に含まれています。チュートリアルの最後では、台所の立体図を作成します。これは、メニューまたはツールバーのアイコンから操作することができます。立体図は回転や大きさの変更ができるほか、光の方向やコントラストの調整も行えます。

Open Watcom C/C++のチュートリアル

このチュートリアルは、Windows上でC/C++プログラムを作成し、実行するまでを案内します。これにより、IDEの基本的な概念とをの構成を理解することができるでしょう。そしてまた、プロジェクト開発を含んだ手順の詳細を知ることができます。

チュ-トリアルを開始するには、IDEを起動してください。Open Watcom C/C++ウィンドウから”IDE”をダブルクリックすることにより、起動できます。

IDEウィンドウの一番下に表示されるステータス域には、ツールバー上のアイコンのうち、マウスカーソルが指し示しているものの機能が表示されます。もし、ステータス域にマウスカーソルが示したアイコンの機能が表示されない場合は、メニューバーがハイライト表示されていないか確認してください(もしハイライト表示されていたら、Altキーを押してください)。

Figure 1. IDEの初期画面

Figure 1. IDEの初期画面(訳注:OS/2版)

プロジェクトを定義する

このチュートリアルでは、KITCHEN(台所)と呼ばれる新しいプロジェクトを作成します。ここに、この作業を完成させる手順を示します。

  1. [File]メニューを開き、[New Project...]の項目を選択して新しいプロジェクトを定義します。または、ツールバー上の”Create a new project”アイコンをクリックすることでも、新しいプロジェクトを定義できます。

  2. 新規プロジェクトとは異なるサンプルプロジェクトのディレクトリが選ばれ、利用できます。Open Watcom C/C++を\WATCOMディレクトリに導入したと仮定すると、サンプルプロジェクトのディレクトリは以下のようになります。

    \WATCOM\SAMPLES\IDE

    このチュートリアルの目的のためには、以下のプロジェクトディレクトリの中から一つを選択することを推奨します。

    WIN
    DOS環境下のWindows 3.xをホスト開発環境として、16ビットのWindows 3.xアプリケーション開発を行う場合の例。
    WIN386
    DOS環境下のWindows 3.xをホスト開発環境として、32ビットのWindows 3.xアプリケーション開発を行う場合の例。
    WIN32
    Windows NT/2000/XPまたはWindows 95/98/Meをホスト開発環境として、32ビットのWin32アプリケーション開発を行う場合の例。
    OS2
    32ビットOS/2をホスト開発環境として、32ビットのOS/2アプリケーション開発を行う場合の例。

    このように、上で示したターゲットは、選択によってWINWIN386WIN32、またはOS/2のどれか一つになります。チュートリアルでは、実例のためにWIN32を例として使用します。

    プロジェクト名を聞かれたら、以下の二つのうちのどちらかを行ってください。

    1. 以下のパス名を入力します。

      [path]\SAMPLES\IDE\target\KITCHEN

      [path]は、Open Watcomを導入したドライブとパスを表します。

    2. ファイルブラウザから以下のディレクトリを選択します。

      [path]\SAMPLES\IDE\target

      そして、ファイル名としてkitchenを指定してください。

      Figure 2. 新規プロジェクトの作成

      Figure 2. 新規プロジェクトの作成(訳注:OS/2版)

      Enterキーを押すか、OK(OPEN)ボタンをクリックします。

      プロジェクトの内容は、このファイルに保存されます。そしてIDEはこのセッションの間、現在の作業ディレクトリを指定されたパスに設定します。

  3. ターゲット名を入力するように求められます。ここでは定義済みのターゲットを追加するのですから、単にBrowseボタンをクリックしてください。続いて”draw”ターゲットファイルを選択します(これは選択したターゲットに従って、draw16.tgt、draw.tgt、draw32.tgt、drawos2.tgtのいずれかになります)。

    Figure 3. 既存のターゲットの追加

    Figure 3. 既存ターゲットの追加(訳注:OS/2版)

    Enterキーを押すか、OK(OPEN)ボタンをクリックします。

  4. ターゲットの定義がすでに存在しているのであれば(すでに作成されているのであれば)、ターゲット環境とイメージタイプの設定については無視することができます。この設定は、新しいターゲットを定義する際に重要となります(すなわち、定義済みのものがない場合)。

    Figure 3. ターゲットタイプの選択

    Figure 4. ターゲットタイプの選択(訳注:OS/2版)

    Enterキーを押すか、OKボタンをクリックしてください。

プロジェクトウィンドウの中に、ターゲットウィンドウが”draw”ターゲットとして作成されます。このウィンドウには、ターゲットに関連したすべてのファイルが表示されています。”フォルダ”アイコンをクリックすることで、特定の拡張子を持つファイルすべてを非表示あるいは表示することができます。たとえば、.bmpの拡張子を持つすべてのファイルを非表示にしたければ、ビットマップに関連したフォルダアイコンをクリックします。

多様なターゲットを追加する

Open WatcomのIDEでは、すべてのプロジェクトに対して多様なターゲットを指定することが可能です。ターゲットは、多様なプロジェクトで使われることに注意してください。新しいターゲットをプロジェクトに追加するには、以下のようにしてください。

  1. [Targets]メニューをプルダウンし、[New Target...]の項目を選択します。
  2. button.tgtを、プロジェクトに追加する新しいターゲットの名前に指定します。拡張子.tgtを含むことを忘れないようにしてください。これは、既存のターゲットを指定する場合に必要なものです。
  3. ターゲット環境とイメージタイプの設定は、ターゲットの定義がすでに存在しているのであれば(すでに作成されているのであれば)無視して構いません。この設定は、新規ターゲットを定義する際に重要となります(すなわち、定義済みでない場合)。
  4. Enterキーを押すか、OKボタンをクリックしてください。

ターゲットウィンドウがプロジェクトウィンドウ内に、buttonターゲットとして作成されます。

ターゲットをMakeする

Open WatcomのIDEは、プロジェクト内の各ターゲットをビルドまたは”make”するために必要な一連の手順を、自動的に作成します。プロジェクト内のターゲットは、個々にまたは一括でメイクされることに注意してください。button.libターゲットをメイクするには、以下の手順に従ってください。

  1. メイクしようとしているターゲットのウィンドウをクリックしてください。この場合、button.libターゲットのウィンドウをクリックしてください。
  2. [Targets]メニューをプルダウンし、[Make item]の項目を選択します(またはツールバー上の”Make the current target”アイコンをクリックします。あるいは、ターゲット上で右クリックし、ポップアップメニューからMake itemを選択することでも行えます)。

IDEはこれで、ターゲットから得られる情報と生成ルールに基づきmakefileを生成します。そして、ターゲット(この場合はbutton.lib)を生成するためにメイクユーティリティを起動します。この操作の出力結果は、ログウィンドウに表示されます。

すべてのターゲットをMakeする

現在のプロジェクト上のすべてのターゲットをメイクするには、ツールバー上の”Make all targets in the project”アイコンをクリックします。あるターゲットが別のターゲットに依存している場合、後者のターゲットが先にメイクされます。このチュートリアルでは、button.libが先にメイクされます(先にメイクされることに関して、何もする必要はありません)。次に、draw???.exeがメイクされます。これは、button.libが、draw???.exeに関連づけられたファイルのリストの中に存在するからです。いずれの場合も、IDEはターゲットから得られる情報と生成ルールに基づきmakefileを生成します。この操作の出力結果は、ログウィンドウに表示されます。

Figure 5. 一つまたは複数のターゲットをメイクする

Figure 5. 一つまたは複数のターゲットをメイクする(訳注:OS/2版))


※訳注

Open Watcom C/C++ 1.7/1.8のOS/2版では、Makefileの生成にバグがあるようです。具体的にはリソースファイルの出力箇所が以下のようになっています(サンプルプロジェクトの場合)。

rc -i $[: -i C:\WATCOM\h -i C:\WATCOM\h\os2 -r ..\drawos2.rc drawos2.res

ここで、rc.exeはWin32用のリソースコンパイラの実行ファイルで、OS/2(およびWin3.x)ではwrc.exeを指定する必要があります。また、オプションの指定方法も修正する必要があります。具体的には、以下のいずれかに修正してください。

wrc -i=$[: -i=C:\WATCOM\h -i=C:\WATCOM\h\os2 -r ..\drawos2.rc -fo=drawos2.res 
wrc -i=$[:;C:\WATCOM\h;C:\WATCOM\h\os2 -r ..\drawos2.rc -fo=drawos2.res

以上で、サンプルプロジェクトは正常にMake allできるはずです。

なお、本バグはOS/2上のOpen Watcom C/C++でOS/2のターゲットを作成するときに確認しました。同じくOS/2上でWin32用のターゲットを作成すると、Makefileは正しくwrc.exeを指定するので、修正の必要なくMake allできます。

なお、本件についてOpen WatcomのBugzillaへ報告を行ったところ、IBM製のrc.exeを導入すれば解決するというコメントをいただきました。しかしながら、上記の通りWin32アプリケーションのMakefileではwrc.exeを指定すること、パスの通ったディレクトリにwrc.exeが存在することから、訳者としてはOpen Watcomのバグだと思っています。


プログラムを実行する

プロジェクトはエラーもなく、ビルドできたはずです。ここで、開発したプログラムを実行する用意ができました。

draw???.exeのターゲットウィンドウをクリックし、ツールバー上の”Run the current target”アイコンをクリックしてください。または、[Targets]メニューから[Run]を選択することでもこの作業を行うことができます。あるいはターゲットウィンドウの内部フレーム外で右クリックし、ポップアップメニューからRunを選択することもできます(右クリックは微妙な操作で、ポップアップメニューの内容はウィンドウ上の右クリックした箇所によって様々な結果が得られるでしょう)。

Figure 6. kitchenのデモ

Figure 6. kitchenのデモ(訳注:OS/2上で作成し、Windows XP上で実行)

作成したデモは、台所の簡単な立体図です。ツールバー上のアイコンかメニューを使用することで、図を上下左右に回転できるほか、 明るさの調節、遠近表示、コントラストの上げ下げ(この機能は[Lighting]メニュー内にあります)が行えます。デモプログラムを終了する場合は、[File]メニューから[Exit]を選択してください。

簡単な編集

IDEは編集しようとするファイルの形式を認識し、作業に適したエディタを起動します。ファイルを編集するには、ファイルをダブルクリックするかファイルを選択し、ツールバー上の”Edit”アイコンをクリックします。.c、.cpp、.h、.hpp、.for、.asm、そして.rcの拡張子を持つファイルはテキストエディタによって編集され、.bmp、.ico、.curの拡張子を持つファイルは画像エディタで編集されます。.dlgまたは.resの拡張子を持つファイルは、リソースエディタによって編集されます。

Figure 7. Open Watcomエディタ

Figure 7. OS/2上のOpen Watcomエディタ(Future Wave Editorを使用)(訳注:Windows版ではOpen Watcom内蔵のエディタが起動する)

さて、これでソースファイルの一つが編集できるようになり、アプリケーションにエラーを埋め込むことができるようになりました。

  1. ”draw”のソースファイル(draw???.c)をダブルクリックし、ソースファイルをエディタに読み込ませます。
  2. キーボードかマウスを利用し、227行目までスクロールダウンします。または、[Edit]メニューをプルダウンし、[Goto Line...]を選択して227を入力しても構いません。Open Watcomエディタは、構文の強調表示を行うために、色とフォントを最大限に活用します。C、C++、FORTRANのファイルにおけるファイルテンプレートは、コードの構成要素を区別するのを手助けするよう、定義されています。
  3. [Options]メニューをプルダウンし、[Colors]の項目を選択します。
  4. パレットから色をクリックし、218行目の単語ifまでドラッグします。キーワードのすべては、選んだ色で表示されます。異なる色をコメント行(225行目)までドラッグすると、すべてのコメントはその色で表示されます。同様に、[Options]メニューから[Fonts]の項目を選択し、フォントスタイルとサイズを選んでソースファイルにドラッグすることもできます。フォントと色のダイアログを閉じるには、ダイアログ左上の角をダブルクリックします。
  5. この色とフォントの設定を、すべて.cppファイルに対して保存(適用)することができます。このためには、[Options]メニューをプルダウンし、[General...]の項目を選択します。そして”Features”ボックスを終了する際に設定を保存するために[next]をクリックします。Enterキーを♂か、またはOKをクリックしてください。
  6. さて、アプリケーションにエラーを追加しましょう。#if 0の行を、#if 1に書き換えてください。
  7. ”Write the current file to disk”アイコンをクリックするか、[File]メニューから[Save]を選んで変更を保存してください。
  8. IDEに戻り(画面上にIDEが表示されているならばクリックするか、Alt+Tabキーを押します)、プロジェクトを再度メイクして実行してください。アプリケーションに問題が見つかります。そこで、次の手順はOpen Watcom Debuggerを使用して問題を突き止めることになります。

プログラムをデバッグする

プログラムをデバッグするには、まず最初にデバッグするための情報を得るためにプログラムをコンパイルしなければなりません。IDEはプロジェクト内の各ターゲットに対して、二つのセットのスイッチを持っています。これらは、開発スイッチとリリーススイッチとして知られています。

  1. draw???.cを右クリックし、ポップアップメニューからSource optionsを選択します。サブメニューからC Compiler Switchesを選択してください

    標準では、ターゲットはデバッギングスイッチが有効な状態の開発モードになっています。これは、コンパイラとリンカがデバッグ用の情報を含むようにするためです。スイッチは、おのおのの区分に大して手動で設定できるるほか、標準のリリーススイッチを[CopyRel]ボタンを使ってコピーすることができます。このスイッチ設定の方法は煩雑なスイッチ名を覚えておく必要がないため、特に、診断メッセージや最適化、コード生成スイッチから特定のリンカスイッチすべてを指定する際に、好都合です。固有の項目に対して適用したいスイッチに対して、単にnextをクリックすればよいのです。

  2. [>>]ボタンを使い、以下の項目が表示されるまで区分をスクロールします。

    6. Debugging Switches

    コンパイル時に使用されるすべてのデバッギング情報が閲覧できます。ここで、[Cancel]をクリックしてこの画面を終了してください。

    Figure 8. コンパイラスイッチの設定

    Figure 8. コンパイラスイッチの設定

  3. デバッガを起動するには、[Targets]メニューをプルダウンし[Debug]を選択するか、ツールバー上の”Debug the current target”アイコンをクリックします。

Open Watcomのデバッガは、可能な限り使いやすく直感的に作られています。また、それと同時に重大なデバッギングを行うための総合的かつ、柔軟な環境を提供してます。最大限の生産性を得るため、必要な情報を正確に表示するように環境を構築することができます。ウィンドウから得られる内容は、ソース、アセンブラ言語、モジュール、関数、呼出、スレッド、イメージ、監視項目、ローカル、グローバル、ファイルの種類、レジスタ内容、80x87浮動小数点、スタック、I/Oポート、メモリ情報、そしてログウィンドウです。ソースは、キーあるいはツールバー上のアイコンを使うことでステップごとに実行することができます。呼出が終わるか呼出が行われる、あるいはまた現在の関数が終了するまで、一つの行をまとめて実行できます。マウスの右ボタンをクリックすることで、構文に応じたポップアップメニューが表示されます。

Figure 9. Open Watcomのデバッガ

Figure 9. Open Watcomのデバッガ

今回の問題はdraw???.exeで発生していることがわかっているので、アプリケーションを実行してプログラムで問題が発生している状態を調査することにします。

  1. ツールバー上の”go!”アイコンをクリックし、プログラムを実行します。例外が発生し、ソースウィンドウは以下の行を示します。

    *pwidth = bitmap.bmWidth + 5;
    

    button_size関数内の最後の行が、例外の前に実行されています。ローカルウィンドウを見ると、pwidthがNULLポインタを示しており、その結果例外を引き起こしていることがわかります。

  2. ここで、ツールバー上の”Move up the call stack”アイコン(赤色の上向き矢印)をクリックすることで、コールスタックを上へ動かすことができます。これにより、プログラムの実行を追跡することができます。前の行では、button_sizeadd_buttonより呼び出されているのが確認できます。再度コールスタックを上へ動かすと、add_buttonが五つ目のパラメータにNULLを持ったまま呼び出されていることが確認できます。チュートリアルのために、わざとエラーが組み込まれています。それは、ソースファイルを数行戻った箇所にあります。

  3. ここでは#if 1#if 0に書き換えることで、エラーを回避できます。#if 1の上で右クリックし、Showを選択します。続いてポップアップメニューからLine...を選択することで、修正すべき行番号を知ることができます。以上が済んだら、デバッガを終了してください。

  4. draw???.cをダブルクリックし、ソースファイルをエディタで開きます。

  5. キーボードまたはマウスを使って、227行目までスクロールしてください。または、[Edit]メニューをプルダウンし、[Goto Line...]を選択して227を入力します。

  6. #if 1#if 0に書き換えます。”Write the current file to disk”アイコンか、[File]メニューから[Save]を選ぶことで、変更を保存します。

  7. IDEに戻ります(画面上に表示されていればそれをクリックしてください。そうでなければ、Alt+Tabを使用します)。そして、プロジェクトを再メイクします。

  8. プロジェクトを実行し、kitchenのデモが実行されることを確認します。

ソースブラウザを使用する

サンプルアプリケーションの卓上の色を変更したい場合を想像してください。変更が必要なコードを調べるのに、Open Watcom Browserを利用することができます。Open Watcom Browserは、クラス定義やメンバー関数、C++のコードと結びついた継承ツリーの調査を行うのに、簡単な手段を提供します。最初に、コンパイラがOpen Watcom Browserの情報を出力するように指示する必要があります。

Figure 10. Open Watcom Browser

Figure 10. Open Watcom Browser

  1. furnitu.cppを右クリックし、ポップアップメニューからSource optionsを選択します。続いて、C++ Compiler Switchesをサブメニューから選択します。

  2. ドロップダウンリストボックスから選択するか、[>>]ボタンを使ってスクロールして、以下のカテゴリを表示します。

    6. Debugging Switches
  3. Emit Browser Information [-db]を選択し、OKをクリックします。

  4. ”Make all targets in the project”アイコンをクリックし、プロジェクトを再メイクします。コンパイラはfurnitu.cppのブラウザ情報を、draw???.dbrというファイルに出力します。これで、ターゲットソースを閲覧する用意ができました。

  5. [Targets]メニューをプルダウンし[Browse]を選択します。または、ツールバー上の”Browse the current target”アイコンをクリックします。ターゲットの継承ツリーが表示されます。

  6. 個々のクラスの詳細、すなわちクラス定義の場所や、プライベート、パブリック、クラス内で保護された関数、クラスの継承といった情報を表示するには、項目上でダブルクリックします。継承ツリーの枝は、閉じたり開いたりすることができます。C++のソースを参照するために、様々な道具が利用できます。ここでは、tableクラスをダブルクリックしてください。

  7. top_and_four_legs()関数をダブルクリックすると、関数の詳細が表示されます。

  8. tabletop変数を選択し、[Detail]メニューをプルダウンします。[Goto Definition...]の項目を選択してください。エディターが起動し、top_and_four_legsの定義を含んだfurnitu.cppが読み込まれます。

  9. 次に、卓上の色を変えるためにfurnitu.cppへいくつかの変更を加えます。キーボードまたはマウスで143行目までスクロールするか、[Edit]メニューから[Goto Line...]を選択して143と入力してください。

  10. 行を書き換えます。

    tabletop->rgb(0, 255, 255);
    

    を、

    tabletop->black();
    

    とします。

  11. ”Write the current file to disk”アイコンをクリックするか、[File]メニューから[Save]を選択して変更を保存します。

  12. プロジェクトを再メイクする前に、ソースブラウザを終了します。

  13. IDEに戻ります(画面上に表示されていればクリックし、そうでなければAlt-Tabキーを利用します)。

  14. ”Make all targets in the projects”アイコンをクリックし、プロジェクトを再メイクします。

エラーを修正する

エラーはメイクの過程で発生し、(複数の)エラーメッセージはログウィンドウに出力されます。エラーについての追加情報はエラーを選択し、[Log]メニューをプルダウンして[Help on Message]の項目を選択してください。

  1. 以下のエラーメッセージをダブルクリックします。

    furnitu.cpp (132): Error! E029: (col 15) symbol 'black' has not been declared.
    

    問題が生じているソースファイル(furnitu.cpp)がエディタに読み込まれ、エラーの発生している箇所にカーソルが表示されます。どうやら、blackは色として定義されていないようです。

  2. ソースブラウザを再起動します。

  3. 継承ウィンドウのcolorをダブルクリックし、メンバ関数のcolorクラスを参照します。選択肢は、blue()green()red()があることがわかります。

  4. Alt-Tabキーを押してエディタに戻り、行、

    tabletop->black();
    

    を、以下に書き換えます。

    tabletop->red();
    
  5. 変更を保存します。

  6. IDEに戻り、プロジェクトを再メイクします。

  7. プログラムを実行し、卓上の色に加えた変更を確認してください。

ビットマップを編集する

Open Watcomが提供するイメージエディタでは、プロジェクトと関連のあるビットマップ、アイコン、カーソルの編集ができます。IDE上で.bmp.ico.cur拡張子を持つファイルをダブルクリックすると、ファイルがイメージエディタに読み込まれます。このエディタは画像を編集するためのたくさんの機能を持っています。サイズ変更、回転、別の画像を”スナップショット”し、取り込むユーティリティといったものです。

Figure 11. Open Watcomのイメージエディタ

Figure 11. Open Watcomのイメージエディタ(訳注:OS/2版はOS搭載のアイコンエディタが起動する)

サンプルプロジェクトで、右矢印アイコンの色を変えたいところを想定してください。

  1. IDE上で.bmpの隣の”フォルダ”アイコンが閉じていたら、アイコンをクリックすることでファイルリストに.bmp拡張子のファイルすべてを表示できます。

  2. right.bmpファイルが表示されるまで、ウィンドウをスクロールします。

  3. draw???.exeのターゲットウィンドウ上で、right.bmpをダブルクリックします。

  4. ツールパレットから”Paint Can”アイコンを選択します。

  5. カラーパレットから、色を選択します。

  6. 矢印をクリックします。

  7. ツールバーの”Save”アイコンをクリックして変更を保存後、イメージエディタを終了します。

  8. ”Make all targets in the project”アイコンをクリックし、変更を含んだプロジェクトを再ビルドします。

メニューを編集する


訳注:
OS/2版のサンプルプロジェクトでは、以下の機能は利用できませんでした。x:\watcom\binp内のOS/2用実行ファイルを確認した限り、本機能は搭載されていないように思えます。


次に、draw???.exeのターゲットウィンドウに、ソースファイルを追加します。

  1. [Souces]メニューをプルダウンして、[New Source...]の項目を選択します。

    注意:
    この操作はメニューバーから選択するか、ファイルリストの表示箇所にマウスポインタを移動し右クリックすることでも行えます。IDEは、目的の操作を行うためのポップアップメニューを表示します。

  2. ファイル名にdraw.res(OS/2ではdrawos2.res)を入力します。OS/2では、ソースファイル名の入力後にOKをクリックしてください。他のすべての環境では、ソースファイル名の入力後にAddをクリックし、ダイアログを閉じます。ここで、.resファイルへの変更が上書きされないように.rcファイルをプロジェクトから削除します。.rcファイルが存在すれば、.resファイルは.rcファイルから生成されます。

  3. draw.rc(OS/2ではdrawos2.rc)を右クリックし、ポップアップメニューからRemove Sourceを選択します。

  4. draw.res(OS/2ではdrawos2.res)をダブルクリックします。リソースエディタが起動し、存在するすべてのリソースが表示されます(この場合は、アイコン、ビットマップ、メニュー)。

    Figure 12. Open Watcomリソースエディタ

    Figure 12. Open Watcomリソースエディタ

  5. ”Menu Resources”をクリックします。

  6. 右手のボックスにある”DrawMenu”をダブルクリックすると、メニューエディタが立ち上がります。メニューエディタは、DrawMenuリソースで定義されているメニュー内容を表示します。ここではポップアップメニュー、メニュー項目とサブメニューの内容、テキスト、セパレータ、属性、ブレイクスタイル、メモリフラッグを確認できます。

    Figure.13 Open Watcomメニューエディタ

    Figure.13 Open Watcomメニューエディタ

  7. アイテムリストウィンドウでMENUITEMの”&Dimmer”をクリックします。

  8. ”Item Text”ウィンドウで、内容を&Darkerに変更し、”Change”ボタンをクリックします。

  9. [File]メニューから[Update]を選択するか、”Update the file with this menu”アイコンをクリックします。

  10. メニューエディタを終了します。

  11. [File]メニューから[Save]を選択するか、”Save this file”アイコンをクリックしてリソースエディタを終了します。

  12. ”Make all targets in the project”アイコンをクリックして、プロジェクトを再メイクします。

実行ファイルからのサンプル抽出と分析


訳注:
OS/2版のサンプルプロジェクトにおいては、IDEからサンプラーを起動することができませんでした。サンプラーを使用するには、コマンドラインからwsample -f=出力ファイル(.smpファイル)名 -r=サンプリングレート 実行ファイルと入力してください。アプリケーションの実行後、カレントディレクトリ内に.smpファイルが生成されます。プロファイラはPMアプリケーションとして用意されているので、その後.smpファイルをプロファイラで読み込んでください。


Open Watcom Execution SamplerとOpen Watcom Execution Profilerは共に、コードの中で最も頻繁に参照される箇所を的確に指し示します。すなわち、プログラムの実行効率を上げる可能性のある候補を示します。

  1. draw???.exeターゲットをクリックします。

  2. [Targets]メニュー項目から[Sample]を選ぶか、ツールバーから”Run and sample the current target”アイコンをクリックします。Open Watcom Execution Samplerが起動し、アプリケーションが実行されます。

  3. 画像の回転やサイズ変更を何度か繰り返してください。サンプラーは定期的な間隔で実行しているコードの”スナップショット”を取得します。その後、アプリケーションを終了してください。.smp拡張子のサンプルファイルが、カレントディレクトリ内に作成されます。このファイルは、プロファイラへの入力に使用されます。

  4. さて、実行ファイルの調査環境が整いました。この操作は、[Targets]メニューの[Profile]を選択するか、ツールバーの”Profile the currnet target”アイコンをクリックすることで実行できます。プロファイラは.smp拡張子のファイルを調査し、アプリケーションの様々なモジュールの活動結果を出ロクします。モジュールが使用した時間の割合は絶対的な値(全サンプルに対する割合)として表示されるとともに、k相対的な値(.exeイメージ内のサンプルに対する割合)として表示されます。

  5. モジュールまたはルーチン名をダブルクリックすると、サンプルが取得されたときの正確なソースが順を追って表示されます。より詳細な結果を取得するには、サンプラーがコードのより良いスナップショットを取得するために、サンプルを取得する頻度を調整することができます。このためには、プロファイラを終了し、[Targets]メニューをプルダウンして[Target Options]を選択、さらに[Sample switches...]をポップアップメニューから選択する必要があります。たとえばSamping rateを2(2ミリ秒の場合)に設定し、OKをクリックしてサンプラーとプロファイラを再度実行してください。

    Figure 14. Open Watcom Execution Profiler

    Figure 14. Open Watcom Execution Profiler

プロジェクトの保存とセッションの終了

以上で、IDEを終了することができます。IDEの終了には、[File]メニューから[Exit]を選択してください。もし、まだプロジェクトを保存していないのでしたら、保存するかどうかのプロンプトが表示されます。”Yes”を選択してセッションを終了してください。

チュートリアルの復習

このチュートリアルでは、draw???.exebutton.libという二つのターゲットを持つkitchen.wpjと呼ばれるプロジェクトを作成しました。コンパイルとリンクを行い実行ファイルを生成するためにWMAKEユーティリティ、Open Watcom C/C++コンパイラとOpen Watcomリンカを使用しました。作成した実行ファイルは直接実行したほか、Open Watcomデバッガの管理下で実行しました。ソースを閲覧し、text and resource editor(訳注:OS/2版では任意のテキスト編集ソフト)を使って変更も加えました。最後に、アプリケーションのサンプル抽出と分析を行いました。

プロジェクトを保存すると、以下のファイルが作成されます。

ドキュメンテーション

以下に、Open Watcom C/C++のドキュメント一覧を示します。Open Watcom C/C++をインストールすると、ドキュメントの一部はオンラインヘルプファイルとして提供されます。以下の分類は、オンラインヘルプを参照する際の助けとなるでしょう。

以下に、Open Watcom C/C++のドキュメント一覧のタイトルを記載します。

Open Watcom C/C++ User's Guide

このマニュアルでは、Open Watcom C/C++の使用方法を解説しています。本書には、コンパイラの入門とチュートリアルが含まれています。本書はまた、コンパイラのオプション、コンパイル前のヘッダファイル、ライブラリ、メモリモジュール、呼出規約、pragma(?)、インラインアセンブラ、ROMベースのアプリケーション、そして環境変数について記載しています。

Open Watcom C/C++ Tools User's Guide

このマニュアルではコマンドラインのツール、すなわちコンパイラとリンクユーティリティ、ライブラリマネージャ、オブジェクトファイルの逆アセンブラ、”far call”最適化ツール、アセンブラ、パッチユーティリティ、ストリップユーティリティ、メイクユーティリティ、そしてタッチユーティリティについて記載しています。

Open Watcom Graphical Tools User's Guide

このマニュアルではOpen WatcomのWindowsとOS/2版のグラフィカルツール、すなわちIDE(統合開発環境)、ブラウザ、Dr. Watcom、Spy、DDE Spy、イメージエディタ、リソースエディタ、サンプラー/プロファイラ、リソースコンパイラ、ヒープウォーカ、ズーム、そしてエディタについて記載しています。

Open Watcom C/C++ Programmer's Guide

このマニュアルでは5つの大項目に分け、オペレーティングシステム固有の開発における注意点について記載しています。オペレーティングシステムは、拡張DOS、OS/2、Windows 3.x、Windows NT/2000/XP、Windows 95/98/Me、32ビットWindows 3.x(Open Watcomの管理テクノロジを利用)、Novell NLMsについて網羅しています。内容は、サンプルプログラムの作成、オペレーティングシステム固有のエラーメッセージ、そしてデバッギングのテクニックについて紹介しています。

Open Watcom C Langage Reference

このマニュアルでは、ISO Cプログラミング言語と、Open Watcom Cで利用できる拡張内容について述べています。

Open Watcom C Library Reference, Volumes 1 and 2

これらのマニュアルでは、Open Watcom C/C++でサポートされるCとグラフィックのライブラリについて解説しています。

Open Watcom C++ Class Library Reference

このマニュアルではOpen Watcom C/C++で提供されるC++クラスライブラリ全般の情報を閲覧できます。

Open Watcom Debugger User's Guide

このマニュアルではOpen Watcomデバッガと高度なデバッギングテクニックについて紹介しています。

Open Watcom Linker User's Guide

このマニュアルでは、拡張DOS、Windows 3.x、Windows 95/98/Me、Windows NT/2000/XP、OS/2、Novell NLMsといったターゲット環境に対する実行ファイルを生成する際に、どのようにOpen Watcomリンカを利用するかについて解説しています。

オンラインドキュメントを参照する

以下の章では、DOS、Windows、OS/2においてオンラインヘルプを参照する方法について記載しています。

DOS環境下でのオンラインドキュメント

DOS環境下でオンラインドキュメントを参照するには、Open Watcomのヘルププログラム、WHELPを使用します。Open Watcomヘルプのコマンドラインでの記述は、以下の通りです。

WHELP help_file [topic_name]

注意点。

  1. help_fileが拡張子無しで指定された場合、拡張子は”.IHP”と仮定されます。

  2. topic_nameパラメータはオプションです。

  3. topic_nameが指定されなかった場合、初期値は”Table of Contents”となります。

  4. topic_nameに空白が含まれる場合、クォートで囲ってください。

以下のヘルプファイルが用意されています。

CGUIDE

Open Watcom C/C++ユーザーズガイド(別途ヘルプファイルが用意されているCおよびC++診断メッセージを除く)。

CLIB

Open Watcom Cライブラリリファレンス。

CLR

Open Watcom C言語リファレンス。

CMIX

Open Watcom C/C++ 総索引。

CPPLIB

Open Watcom C++ クラスライブラリリファレンス。

LGUIDE

Open Watcom リンカユーザーズガイド。

PGUIDE

Open Watcom C/C++ プログラマーズガイド。

C_README

Open Watcom C/C++ をはじめるために。

RESCOMP

Open Watcom リソースコンパイラのドキュメント(Open Watcom グラフィカルツールユーザーズガイドからの抜粋)。

TOOLS

Open Watcom C/C++ ツールユーザーズガイド。

WD

Open Watcom デバッガユーザーズガイド。

WPROF

Open Watcom 実行ファイルサンプラーとOpen Watcom 実行ファイルプロファイラのドキュメント(Open Watcom グラフィカルツールユーザーズガイドからの抜粋)。

WCCERRRS

Open Watcom C診断メッセージのドキュメント(Open Watcom C/C++ユーザーズガイドからの抜粋)。

WPPERRS

Open Watcom C++診断メッセージのドキュメント(Open Watcom C/C++ユーザーズガイドからの抜粋)。

Windows環境下でのオンラインドキュメント

オンラインドキュメントは、Windowsのヘルプファイル(”.HLP”ファイル)形式で用意されています。Open Watcom C/C++をWindows 3.x、Windows 95/98/Me、Windows NT/2000/XPにインストールすると、いくつかのプログラムグループが作成されます。オンラインドキュメントは、プログラムグループを開きヘルプアイコンをダブルクリックすることで参照できます。

Open Watcom C/C++グループの内容は以下の通りです。

Getting Started

Open Watcom C/C++をはじめるために。

Open Watcom C/C++ Tools Helpグループの内容は以下の通りです。

Accelerator Editor Help

アクセラレータエディタについての情報です(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

C Error Messages

Open Watcom C診断メッセージについての情報です(Open Watcom C/C++ユーザーズガイドからの抜粋)。

C++ Error Messages

Open Watcom C++診断メッセージについての情報です(Open Watcom C/C++ユーザーズガイドからの抜粋)。

C Language Reference

Open WatcomのC言語リファレンス。

C Library Reference

Open WatcomのCライブラリリファレンス。

C++ Library Reference

Open WatcomのC++クラスライブラリリファレンス。

C/C++ Master Index

Open Watcom C/C++オンラインヘルプの総索引

DDE Spy Help

DDEスパイユーティリティに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Debugger Help

Open Watcomのデバッガに関する使い方。

Dialog Editor Help

ダイアログエディタに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Dr. Watcom Help
Dr. Watcomに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Editor Help

Open Watcomエディタに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Heap Walker Help

ヒープウォーカユーティリティに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

IDE Help

統合開発環境に関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Image Editor Help

イメージエディタに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Linker Guide

Open Watcomリンカの使い方。

Menu Editor Help

メニューエディタに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Profiler Help

Open Watcom実行ファイルサンプラーとOpen Watcom実行ファイルプロファイラに関する情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Programmer's Guide

Open Watcom C/C++プログラマー向けの情報。

Resource Compiler Help

リソースコンパイラの情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Resource Editor Help

リソースエディタの情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Source Browser Help

ブラウザの情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Spy Help

スパイユーティリティの情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

String Editor Help

ストリングエディタの情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Tools Guide
Open Watcom C/C++ツールの使い方。

User's Guide

Open Watcom C/C++の使い方(別途ヘルプファイルが用意されているCおよびC++診断メッセージを除く)。

Zoom Help

ズームユーティリティの情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

OS/2環境下でのオンラインドキュメント

オンラインドキュメントは、OS/2のインフォメーションファイル形式(”.INF”ファイル)で提供されます。Open Watcom C/C++をOS/2環境に導入すると、Open Watcom C/C++フォルダが作成されます。このフォルダを開き、ヘルプアイコンをダブルクリックすることでオンラインドキュメントを参照できます。

C Error Messages

C診断メッセージの情報(Open Watcom C/C++ユーザーズガイドからの抜粋)。

C++ Error Messages

C++診断メッセージの情報(Open Watcom C/C++ユーザーズガイドからの抜粋)。

C Language Reference

Open WatcomのC言語リファレンス。

C Library Reference

Open WatcomのC++クラスライブラリリファレンス。

C/C++ Master Index

Open Watcom C/C++オンラインヘルプの総索引。

Debugger Help

Open Watcomデバッガの使い方。

Getting Started

Open Watcom C/C++を始めるために。

IDE Help

統合開発環境についての情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Profiler Help

Open Watcomの実行ファイルサンプラーとOpen Watcomの実行ファイルプロファイラについての情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Programmer's Guide

Open Watcom C/C++プログラマーへの情報。

Source Browser Help

Open Watcomブラウザについての情報(Open Watcomグラフィカルツールユーザーズガイドからの抜粋)。

Tools Guide

Open Watcom C/C++ツールの使い方。

User's Guide

Open Watcom C/C++の使い方(別途ヘルプファイルが用意されているCおよびC++診断メッセージを除く)。

ベンチマークのヒント

Open Watcom C/C++コンパイラにはコードから実行ファイルを生成する際の制御用に、豊富なオプションを用意しています。すべてのアプリケーションに対して、共通して最も速い実行時間を実現することを確実にするコンパイラオプションのセットを作ることは不可能です。このため、ここでは、ほとんどのアプリケーションに対して最良の実行時間を実現すると予想されるコンパイラオプションの一覧を示します。個別のアプリケーションについて、どのオプションの組み合わせが最速のコードを生成するのか、異なるオプションを試さなければならない場合もあるでしょう。

最速の16ビットインテルコードを生成するための推奨オプションは、以下の通りです。

Pentium Pro

/onatx /oh /oi+ /ei /zp8 /6 /fpi87 /fp6

Pentium

/onatx /oh /oi+ /ei /zp8 /5 /fpi87 /fp5

486

/onatx /oh /oi+ /ei /zp8 /4 /fpi87 /fp3

386

/onatx /oh /oi+ /ei /zp8 /3 /fpi87 /fp3

286

/onatx /oh /oi+ /ei /zp8 /2 /fpi87 /fp2

186

/onatx /oh /oi+ /ei /zp8 /1 /fpi87

8086

/onatx /oh /oi+ /ei /zp8 /0 /fpi87

最速の32ビットインテルコードを生成するための推奨オプションは、以下の通りです。

Pentium Pro

/onatx /oh /oi+ /ei /zp8 /fp6

Pentium

/onatx /oh /oi+ /ei /zp8 /5 /fp5

486

/onatx /oh /oi+ /ei /zp8 /4 /fp3

386

/onatx /oh /oi+ /ei /zp8 /3 /fp3

”oi+”オプションは、C++専用です。ある環境下では、”ob”と”ol+”による最適化が32ビットインテルコードによりよい性能をもたらすことがあります。

”on”オプションは、コンパイラが浮動小数点の除算を乗算に変換して置き換えます。これはより速いコードを生成しますが(乗算は除算より速いため)、計算結果が同一になるとは限りません。なぜならば、変換は正確に行われるとは限らないからです。

”oe”オプションは、小規模なユーザ定義関数の呼出を生成するかわりに、関数をインラインに展開します。関数をインラインに展開することで、関数の呼出が生成されたことを検出する方法を最適化するよりも効率よく、コードを実行することができます。

”oa”オプションは、コンパイラの別名チェックする基準を「ゆるく」します。

”ot”オプションは、コード生成過程においてコードサイズに一切構わず、より速いコード順序を選択するためには必ず指定しなくてはなりません。

”ox”オプションは”obmiler”と”s”オプションの組み合わせと同等の効果をもたらします。本オプションを指定することで、コンパイラ/コード生成器においての分岐予測(”ob”)、サイン、コサイン、平方根のような数学関数においてインラインの387命令を生成(”om”)、組み込み関数のインライン展開(”oi”)、ループ最適化の実行(”ol”)、小規模なユーザ関数のインライン展開(”oe”)、パイプラインの停止を避けるための命令再発行(”or”)、そしてスタックオーバフローの確認を生成しない(”s”)といった機能が有効になります。”or”オプションは、PentiumおよびPentium Proプロセッサにおいて高速なコードを生成するのに、非常に重要なものとなります。

”oh”オプションは、最適化の繰り返しを試行します(コンパイルに長時間かかりますが、より最適化されたコードを生成します)。

”oi+”オプションは、C++コンパイラで組み込み関数をインラインに展開します(ちょうど”oi”オプションと似たようなものです)。さらに、inline_depthを最大値(255)に設定します。初期値では、inline_depthの値は3となります。inline_depthの値は、C++のinline_depthプラグマを使用して変更することもできます。

”ei”オプションは、すべての列挙型について少なくとも”int”を割り当てます。

”zp8”オプションは、すべてのデータを8ビットの境界に揃えます。初期値は16ビットコンパイラが”zp2”で、32ビットコンパイラが”zp8”となります。たとえばもし”zp1”が指定されると、必要となるデータメモリの総計を減らすためにすべてのデータがまとめられますが、特有の境界上にないデータにアクセスするためには余分なクロックサイクルを必要とします。

”0”、”1”、”2”、”3”、”4”、”5”、”6”のオプションは、プロセッサ固有の命令セット機能とタイミングのためにインテルコードシーケンスの最適化を発行します。16ビットインテルアプリケーションでは、これらのオプションを利用するとアプリケーションを実行するシステムリソースを使い切ってしまうかもしれませんが、実効性能は上昇します。

”fp2”、”fp3”、”fp5”、”fp6”のオプションは、インテルシリーズの数学コプロセッサに含まれる特殊機能において、インテル浮動小数点の演算対象を発行します。16ビットインテルアプリケーションでは、これらのオプションを利用するとアプリケーションを実行するシステムリソースを使い切ってしまうかもしれませんが、実効性能は上昇します。

”fpi87”オプションは、インラインのインテル80x87数値データプロセッサ命令を、浮動小数点演算のオブジェクトコードへと変換します。浮動小数点命令のエミュレーションは含まれないため、16ビットインテルアプリケーションでは最良の浮動小数点性能が得られます。

32ビットインテルアプリケーションでは、”fp5”オプションを指定するとPentium環境下で良好な性能が得られますが、386や486で最適化した性能には及びません。”5”オプションはPentium環境下で良好な性能が得られる上、386や486の影響があったとしても最小に押さえることができます。従って、以下のオプションの組み合わせが386、486,Pentiumすべてのプロセッサに対して良好な性能を期待できます。

/onatx /oh /oi+ /ei /zp8 /5 /fp3

Open Watcom C/C++ 1.7のリリースノート

この新しいバージョンのOpen Watcom C/C++には、いくつもの拡張や変更が施されています。以下の章では大きな変更点の概要について記載します。コンパイラや紹介されているツールに対するこれら、またはその他の変更点についての詳細は、ユーザーズガイドを閲覧してください。アプリケーションを再コンパイルする必要があるかどうかを判断するには、以下の章を確認してください。

Open Watcomバージョン1.6との違い

以下に、Open Watcom C/C++ 1.7にて加えられた変更を列挙します。

再コンパイルが必要となる、1.7での変更点

Open Watcomバージョン1.5との違い

Open Watcomバージョン1.4との違い

Open Watcomバージョン1.3との違い

再コンパイルが必要となる、1.4での変更点

Open Watcomバージョン1.2との違い

Open Watcomバージョン1.1との違い

Open Watcomバージョン1.0との違い

バージョン11.0との違い

再コンパイルが必要となる、11.0での変更点

バージョン10.6からの主要な変更点

C++コンパイラをバージョン11.0に更新

Cコンパイラをバージョン11.0に更新

コードジェネレータをバージョン11.0に更新

コンパイラツールをバージョン11.0に更新

C/C++ライブラリをバージョン11.0に更新

DOSグラフィックライブラリをバージョン11.0に更新

Microsoft Foundation Classへの対応をバージョン11.0に更新

Microsoft Win32 SDKへの対応をバージョン11.0に更新

Blue Sky's Visual Programmerをバージョン11.0に更新

再コンパイルが必要となる、10.6での変更点

バージョン10.5からの主要な変更点

Windows 95のヘルプファイルフォーマット

C++コンパイラをバージョン10.6に更新

Cコンパイラをバージョン10.6に更新

Cライブラリをバージョン10.6に更新

Microsoft Foundation Classへの対応をバージョン10.6に更新

イメージエディタをバージョン10.6に更新

ダイアログエディタをバージョン10.6に更新

リソースエディタをバージョン10.6に更新

リソースコンパイラをバージョン10.6に更新

バージョン10.0からの主要な変更点

バージョン10.5に更新することで再コンパイルが必要となるケース

バージョン10.0LAからの主要な変更点

Watcom C9.5/386からの主要な変更点

Itemsは今後サポートされません

バージョン10.0に更新することで再コンパイルが必要となるケース

Watcom C9.01/386からの主要な変更点

更新することで再コンパイルが必要となるケース

Watcom C9.0/386からの主要な変更点

Watcom C9.0/386で追加されたコマンドラインオプション

Watcom C8.5/386からの主要な変更点

Watcom C8.5/386で追加されたコマンドラインオプション

Watcom C8.0/386からの主要な変更点

Watcom C8.0/386で追加されたコマンドラインオプション

Watcom C7.0/386からの主要な変更点

プロテクトモードのコンパイラとリンカ

Sybase Open Watcom Public License

おかしいと感じたら

Win-OS/2とOS/2の仕様

戻る