Re: 構造体をポィンタで使用するとエラーとなる
森山です。
On Thu, 24 Feb 2005 16:53:16 +0900
<kounoike@mbh.nifty.com> wrote:
> 関数側で云々と言うより,そもそも biSetPointer で何をしたいのかをもう少し明確にしな
> いと的確なアドバイスは得られないのではと思いますが。
>
> 私自身ほとんど初級者レベルではありますが,私にはbiSetPointerの意味が理解できませ
> ん。
確かにおっしゃる通りですね。
元々は、装置の制御用にメーカが提供しているライブラリに
単を発しています。
説明では、あらかじめ以下の構造体を定義して有るので、
static struct tGroupName {
int iDummy ;
int iDummy2 ;
} ; < ここに名前が無いのは変なのですが、
メーカ説明では、何も記載されて
いません。
ユーザで、以下のように宣言し、
static struct tGroupName *pgUser ;
以下のように関数を使用する事により、
functionName ( &pgUser ) ;
以下のように値を得る事が出来る。
iUserVar = pgUser->iDummy ;
という説明になっているのです。
# メーカの説明では、ユーザが定義した構造体型ポインタ変数の
# 領域確保については説明が無く、サンプルプログラムでも領域確保の
# 記述は有りません。又、ソースは公開されていません。
# 尚、上記で使用している変数名等は、実際の名称とは異なります。
で、上記ライブラリの動作を調べると、関数を使用した時にユーザが
定義した変数に値を返すのではなくて、あらかじめ確保してある領域の
ポインタを返すような動作になっているのです。
それで、関数側でどうゆう処理をしているのかと、興味を持った
次第なのです。
# ちなみにコンパイラ自体もメーカ提供のもので、NECのPC-9801用
# MS-DOSで使用する物です。
--
K.Moriyama
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735