タグ

2007年12月30日のブックマーク (2件)

  • Super Technique 講座~マクロの技

    質的にC言語はトリッキーな言語ではない。だから、トリッキーな技は特定機能に集中する傾向があり、そのような機能とは「マクロ」と「ポインタ」である。 引数展開マクロの小技 DRY原理とプロトタイプ宣言 グローバル変数管理 関数ポインタ配列のプロトタイプ宣言と定義 引数展開マクロの小技 一般論としては、マクロは define 文によって即値定数を記号定数で定義しなおす、というのが真っ当な技であるが、これは今更触れるほどの内容はない。それでも次のようなテクニックはある。 #define swap(type,a,b) {type tmp=a;a=b;b=tmp;} int x = 10; int y = 20; swap( int, x, y ); これは引数展開マクロを使って、いわゆるSWAPを実現する簡単なマクロである。よく類書にこれは「次のように使うと問題がある」とされる。 if( z )

    tanakaBox
    tanakaBox 2007/12/30
    やばい。禁断の果実に・・・
  • ELF Format

    a.out形式はUNIXで長い間使われてきたが、Unix System Vの登場時に、クロスコンパイルや動的リンクなどに、対応するためにより良い形式が必要だとして、ELF(Executable and Linking Format)が作られました。 ELFは、再配置可可能オブジェクト・実行可能・共有オブジェクト・コアという4種類のファイルがあます。 再配置可可能オブジェクト 再配置可可能ファイルは、アセンブラやコンパイラが作成する、オブジェクトファイル 実行可能 実行可能は、再配置が全て完了し、シンボルも解決してある(実行時に解決される、共有ライブラリのシンボルは除く) "lsコマンド"のような実行可能なファイル 共有オブジェクト リンカ用のシンボル情報と実行時に使われるコードを格納する、共有ライブラリ等のファイル コア ELF ファイルフォーマットを使っている実行可能ファイルはELFヘッ

    tanakaBox
    tanakaBox 2007/12/30
    elfフォーマット解説。