開発 Tips (C/C++/Visual C++/MFC/Windows プログラミング)


C/C++

開発 Tips


凡例:
本頁内 : 頁内へのリンク
別頁 : サイト内の別頁へのリンク
外頁 : 外部サイトへのリンク

【Q&A】 C による各種アルゴリズムが識りたい

【Q】 C 言語によって各種アルゴリズムが紹介された書籍等は無いでしょうか.

【A】 以下のものはどうでしょう.

・定本 Cプログラマのためのアルゴリズムとデータ構造
近藤 嘉雪 著 A5 432頁 本体価格(税別):¥2,700 ソフトバンクパブリッシング

・C言語による最新アルゴリズム事典
奥村 晴彦 著 A5 448頁 本体価格(税別):¥2,330 技術評論社

・Algorithm Collection
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/

数値計算であれば
・「C/C++ 数値計算アルゴリズムブック」
シャンマ,N. 著/鈴木 治郎 訳 B5 328頁 本体価格(税別):¥4,600 海文堂出版

【Q&A】 関数引数の配列とポインタ

【Q】 関数の引数として配列を受け取る場合,

void function(int* data);



void function(int[] data);

の二つの書き方が有るようなのですが,どう違うのですか.

【A】 実際には void function(int* data) と記述しても void function(int[] data) としても,data はポインタです.sizeof(data) をしてみると判ると思います.C/C++ の規格として「配列名を式の中で書いた場合は,sizeof 演算子と & 演算子を除いて先頭要素へのポインタとして解釈される」と決まっています.

【Q&A】 new に失敗したかどうかのチェック

【Q】 C++ で new に失敗したかどうかチェックしたいのですが.

【A】 処理系によると思いますが,

1. 失敗したら new は NULL を返す.
2. set_new_handler 等でメモリの割り当てが失敗した時の処理ルーチンが登録出来,失敗したら其れが呼ばれる.
3. 失敗したら new は bad_alloc 等の例外を投げる.

の何れか (又は複数) がサポートされている筈です.

ISO/ANSI C++ 言語規格では (型 T に関して)

・new T に失敗したら例外を投げる.
・new(std::nothrow) T に失敗したら NULL を返す.

と定められています.

【Q&A】 ローカルなシンボル

【Q】 ローカルな関数名や変数名を使って,他のグローバルなシンボル名とぶつからないようにしたいのですが.

【A】 モジュール毎であれば,static にすれば O.K. です.C++ の場合名前無し namespace が使えます.

【情報】無料の C/C++ 処理系 (DOS/Windows)

■ Microsoft Visual C++ Toolkit 2003 Visual Studio .NT 2003 に収録されている、VC++ 7.x 相当の C/C++ コンパイラ付き

http://msdn.microsoft.com/visualc/vctoolkit2003/

■ Turbo C (& Turbo Pascal)
・Turbo C 1.0/1.5/2.01
(・Turbo Pascal 1.0/3.02/5.5)
・MS-DOS 用

http://community.borland.com/museum/

■ LCC
・MS-DOS 用

http://www.cs.princeton.edu/software/lcc/

■ LCC-Win32
・上記のウィンドウズ用

http://www.cs.virginia.edu/~lcc-win32/


■ LSI C-86
・LSI C-86 Ver. 3.30c試食版
・MS-DOS 用
・日本語マニュアル

http://www.lsi-j.ab.psiweb.com/freesoft/


■ Borland C++ Compiler
・Borland C++ Compiler 5.5
・Windows 95/98/NT4/2000 対応

http://www.borland.com/products/downloads/download_cbuilder.html


■ Borland C++ Compiler 日本語版
・上記の日本語版

http://www.borland.co.jp/cppbuilder/freecompiler/

■ GNU の処理系 (MS-DOS 用)

・DJGPP
http://www.delorie.com/djgpp/


■ GNU の処理系 (ウィンドウズ用)

・Cygwin
http://cygwin.com/

・Mingw32
http://www.mingw.org/


■ CINT
・C/C++言語インタープリタ

ftp://root.cern.ch/root/

■ めじろ++98
・C/C++言語インタープリタ

http://members.aol.com/mejiro98/

■ Digital Mars C and C++ Compilers (for Win32, Win16, DOS32 and DOS)

http://www.digitalmars.com/

■ 開発支援ツール

原則として,これらの処理系には GUI な開発環境は付属していません.
そこで開発支援ツールをご紹介します.

・Borland C++ Compiler 5.5 用の支援ツール

C//Builder for Windows95/98 Ver 0.01 (フリーウェア)

http://www3.cds.ne.jp/~kmth/software/

【情報】C言語に関するFAQ

「C言語に関するFAQ」 (日本語) です.

http://www.kouno.jp/home/c_faq/

【Q&A】 C と C++ の共用体 (union) の違い

【Q】 C と C++ では共用体 (union) の機能に違いが有りますか.

【A】 C++ では,

・メンバーにアクセス指定子 (public,protected,private) が付けられる (static は付けられない).
・仮想関数を除くメンバー関数を持てる.コンストラクタやデストラクタも持てる.但し,無名の union を除く.
・変数の宣言時に union キーワードが不要.

例.

union foo
{
    char c;
    int i;
};

union foo var1; /* C の場合の union 変数の宣言 */
foo       var2; /* C++   での union 変数の宣言 */

【情報】Watcom C/C++ と Watcom Fortran のソースが無償公開

米Sybase,Watcom C/C++とWatcom Fortranのソースを無償公開
2000/08/25

http://biztech.nikkeibp.co.jp/wcs/show/leaf?CID=onair/biztech/comp/110366
Open Watcom

【情報】Boost に関する Web サイト

Boost は C++のクラス ライブラリ群です.