タグ

ProgrammingとCに関するtztのブックマーク (28)

  • CUnit チュートリアル

    CUnit とは、C言語開発において単体テストを支援する 「テスティング・フレームワーク」です。 もちろん、きちんとした設計者であれば、 CUnit のような仕組みがあろうと無かろうと、 自分で作った分の設計者テストは言われなくても実施するでしょうし、 組織としてきちんとしていれば、すでに何らかの仕組みは構築しているでしょう。 ですが、もし今まで単体テストをチーム内の各設計者が バラバラに実施していたということであれば、 CUnit を試してみる価値はあります。 また、XP(eXtreme Programming) のようなスタイルを構築したいと思っているのであれば、 CUnit を必須、としてしまうのも一つの手です。 ここでは、Cygwin 環境に CUnit をインストールして使ってみます。 導入 テスト環境の概説 使ってみよう アサート・マクロ テスト・レジストリ テスト・スイート

  • C/C++ リファレンス

  • getoptによるオプション解析

    はじめに プログラムにパラメータを直接埋め込むような, 非効率的なプログラミングは止めましょう. #defineで記述するのもいいですが,頻繁にパラメータ調整をする時には, いちいち再コンパイルが必要です. こういう時にはコマンドラインの引数で,オプション指定するのが一番です. もちろん,非常に多くのパラメータ指定が必要な場合は, パラメータ設定ファイルに記述した方がいいですが, それでもオプション指定はできたほうがいいでしょう. このオプション解析を自分でやろうとすると,面倒なだけでなく, 統一性のないヘンテコリンなコマンドになりがちです (オプションの記述順を変えたらダメとか...). オプション解析は,getoptを使ってスマートに書きましょう. 詳しくは man 3 getopt を見て下さい. ついでに man atoi, man atof あたりも見ておくといいでしょう. 具体

    tzt
    tzt 2009/05/25
    getopt()でマイナスの引数を使う裏技(?)
  • Cプログラミング診断室

    書は、発売から10年が経過した『Cプログラミング診断室』に加筆修正す るとともに、のサイズを小さく持ち運びやすく紙も軽いものを選び、どこで も読めるように工夫したものです。レイアウトやイラストも変更しております。 また、表紙デザインは一新しました。 表紙には特別な工夫がされております。詳しくは、書店店頭にてじっくりと表 紙を眺めてみてください。気付く人は気付くはずです

  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

  • いやなブログ: Cのポインタを整数に変換する

    Cのポインタを整数に変換する Cのポインタを整数に変換したいときがあります。このとき問題になるのは、ポインタのサイズが int と同じとは限らないということです。たとえば、 x86_64 の 64ビットのバイナリでは sizeof(int) = 4, sizeof(void *) = 8 となります。ポインタと同じサイズの整数を使いたい場合は C99 で導入された stdint.h で提供される intptr_t または uintptr_t を使います。 stdint.h には他にも int32_t や int64_t など、サイズつきの整数の型も提供されています。たとえば、uint64_t を使うと、64ビットの符合なし整数を扱うことができます。 私の場合、C++ のプログラムで void * から直接 uint64_t にキャストしようとしてはまりました。次のプログラムを x86_32

    tzt
    tzt 2009/01/25
    「ポインタと同じサイズの整数を使いたい場合は C99 で導入された stdint.h で提供される intptr_t または uintptr_t を使います。」
  • 普通のやつらの下を行け: C でバックトレース表示 - bkブログ

    普通のやつらの下を行け: C でバックトレース表示 普通のやつらの下を行けの第2回として、今回は glibc の関数を使って C でバックトレース (スタックトレース) の表示を行ってみます。 バックトレースとは バックトレースとは、大ざっぱに言うと、現在の関数に至るまでの道筋です。たとえば、次の Ruby プログラムを実行すると、 1 / 0 の行で例外が発生して、バックトレースの表示とともにプログラムは異常終了します。 def foo 1 / 0 end def main foo end main この例では main から foo を呼び foo の中の 1 / 0 の部分で例外が発生しています。 % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div

    tzt
    tzt 2009/01/23
    backtrace(), backtrace_symbols(), backtrace_symbols_fd(), /lib/libSegFault.so, catchsegv
  • Where is Phinloda?

    CG by ほりもとあきら Last Update: 2007-01-15 休眠状態?

    tzt
    tzt 2009/01/23
    FPROG懐かしい。