しらたまのコミッタ日記

2007-10-14

[][][]DLLポインタ22:21

ポインタDLL関数に渡すとき、文字列実数ならば、参照渡しを付けておけば、のまま渡してもきちんと指定した変数へのポインタを渡すなりなんなりしますが、整数の場合はPOINTERアドレスを渡さなければなりません。(先ほどまでそれすらうまく動いていなかったので修正しました)

これは、なでしこポインタ型が使われていないため、POINTERの返り値と整数の値とが区別できないためです。*1

「使われていない」と書きましたが、じつは内部的にはポインタ型があります

しかし、全く使われていません。

これを使うようにすれば、ポインタ整数データ的に区別が可能になるので、この問題は解決するでしょう。

ただ、問題がありますポインタ型は演算できないのです。

例えば、POINTER命令がポインタ型を返すようにすると、「POINTER(A)+1」はPOINTER(A)の値にかかわらず1になります。

まあ、ちゃんと演算できるように修正すればいい話なんですが、修正が随所にありそうで修正漏れが起こりそうな気配が……

型変換(TOINT)が必要いうことにすれば修正は数カ所ですみますが、度は互換性の問題が出るんですよね……

*1POINTERの返り値と整数変数とだけなら区別可能です。

ゲスト



トラックバック - http://nadesiko.g.hatena.ne.jp/white-ball/20071014
200612
200701020304050708101112
20080103040506070912
200904
20100204
201104