RSS

 

RSS


プ:Cの不完全宣言

  • いわいまさか
  • at 2008/10/24 20:04:55

 若手社員のKDさんが、外部から入手したプログラムのソースを整理する仕事をしていた。整理の方向性としては、「グローバル変数とスタティック変数(Cで言うところの)をクラス化する」。クラス化すると言ってもCなので使うのはstructなのだが。

 作業途中で解決できない問題が出たという話。「struct宣言どおしの関係がうまくいかなくてコンパイルエラーが出る」だという。

 なので、以下のコードを提示した。

struct ABC;   ←※

struct XYZ
{
//  struct ABC abc;  ← これはNG
//  実体を入れようとするとまだABCの全容が
//   コンパイラにとってわからないのでエラー

    struct ABC *abcptr;  // ポインタはOK
};

struct ABC
{
  struct XYZ xyz; //  ここは実体OK。
};

 KDさん曰く、このコードを参考にしたら、問題が解決し仕事が進んだとのこと。めでたし。

 この構造?の呼び名が、前方参照、前方宣言、後方参照・・・だったか、わからなくなっていた。

 この記事を書くにあたり、ネットで調べてみると上記※印のところを「不完全宣言」いう表現もあるようだ。この言い方もちょっと物騒でビックリな感じもするが、前だか後ろだかというような相対的な表現よりいいかな。


  • コメント (0)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/52547