タグ

2014年11月18日のブックマーク (2件)

  • C言語のリンケージとか変数宣言とか - ほっしーの技術ネタ備忘録

    実はこのあたりの話を理解しないままに10年近くCでコーディングしていたことに気づいたので、勉強したついでに備忘録。 リンケージ まず基から。 リンク時にシンボル名が被った時に、実体との対応付けをどうするか、これが3通りあります。 外部リンケージ(ソースファイルを超えて同じ実体を共有) 内部リンケージ(ソースファイルごとに異なる実体を用意、ソースファイル内では同じ実体を共有) リンケージなし(それぞれ別の実体を用意) 局所変数はすべてリンケージなしになります。 グローバル変数は内部/外部リンケージになります。 外部リンケージを持つグローバル変数の宣言・定義 基形 まず基的な書き方です。 /* file1.c */ extern int a; /* これは宣言だけ */ /* file2.c */ extern int a; /* こっちのファイルでも宣言だけ */ /* file3.c

    C言語のリンケージとか変数宣言とか - ほっしーの技術ネタ備忘録
  • 分割コンパイルとリンケージ

    | 分割コンパイルと翻訳単位 | extern記憶クラス指定子 | リンケージ | オブジェクトモジュールとライブラリ | 演習問題 | [付録]nmコマンド | 分割コンパイルと翻訳単位 だんだん複雑なプログラムを開発するようになると ソーステキストが長くなり,一つのソースファイルで作成していると 全体を見通すのが難しくなってきます. またほんの一部だけを修正をしたときにも 全体をコンパイルし直さなければならないので, コンパイルに時間がかかるようになります. よって,プログラムをいくつかの部分に分けて 別々に開発したいという要求が自然に起こってきます. このような考えからプログラミング言語には 一つのプログラムを複数に分割できる機能が提供されることが多く, そのような各部分のことを一般にはモジュールと呼びます. C言語ではモジュールは翻訳単位と呼ばれ, おおまかには一つのソースファイル