|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 後 : [のち] 1. (n,adj-no) afterwards 2. since then 3. in the future ・ 後方 : [こうほう] 【名詞】 1. behind 2. in the rear 3. in back ・ 方 : [ほう] 1. (n-adv,n) side 2. direction 3. way ・ 宣言 : [せんげん] 1. (n,vs) declaration 2. proclamation 3. announcement ・ 言 : [げん] 【名詞】 1. word 2. remark 3. statement
プログラミングにおいて、前方宣言(ぜんぽうせんげん)とはプログラマが完全な定義を与えていない変数または関数の宣言のことである。 C言語では、上の二つの行はそれぞれ 配列 と 一つの引数の関数 の前方宣言を表す (また後者は関数プロトタイプでもある)。コンパイラはこれらの宣言を処理した後、プログラマに残りの部分で elements とfoo の実体の使用を許可する。しかしいくつかの場合、プログラマは宣言した実体のための''定義''を提供しなければならないだろう:Pascalや他のヴィルトの言語では、前方宣言は使う前にすべての実体を宣言しなければならないという一般的規則である。C言語でも同じ一般的規則が適用されるが、未宣言の関数のための例外がある。その結果、C言語では(賢明ではないが)相互再帰の関数ペアを実行することが可能である: Pascalで同様の実装をする場合、 first がsecond を呼び出す前にsecond の前方宣言が必要である。前方宣言がなければ、コンパイラは識別子 second が宣言されないで使われたというエラーメッセージを表示するであろう。==前方参照== 前方参照という用語は時々''前方宣言''の類義語として使われている。 しかしながらこの用語はその定義よりもむしろ、宣言する前に実体を実際に''利用''することを言及するのに使われている。この定義は上記のコードにおける first のsecond への参照が前方参照ということである。 したがって私達は、class C ; 例えば、 myValue の宣言前にmyValue への二つの参照があるとする。C++では一般的に前方参照を禁止しているが、上記コードはクラスメンバの例外として許されている。コンパイラは、メンバ変数 myValue の型を知らないとメンバ関数 accessor をコンパイルできないので、" TITLE="Pascalでは前方宣言が必須であるので、前方''参照''が禁止されていると言うであろう。C++での(正しい)前方参照の例: 例えば、 myValue の宣言前にmyValue への二つの参照があるとする。C++では一般的に前方参照を禁止しているが、上記コードはクラスメンバの例外として許されている。コンパイラは、メンバ変数 myValue の型を知らないとメンバ関数 accessor をコンパイルできないので、">Pascalでは前方宣言が必須であるので、前方''参照''が禁止されていると言うであろう。C++での(正しい)前方参照の例: 例えば、 myValue の宣言前にmyValue への二つの参照があるとする。C++では一般的に前方参照を禁止しているが、上記コードはクラスメンバの例外として許されている。コンパイラは、メンバ変数 myValue の型を知らないとメンバ関数 accessor をコンパイルできないので、myValue の宣言を処理するまでaccessor の定義を覚えておく。前方参照を可能にすると、コンパイラの複雑さやメモリの必要量が激しく増し、一般的にはコンパイラのワンパスでの実行を難しくする。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「前方宣言」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Forward declaration 」があります。 スポンサード リンク
|