PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
13112 00/09/06 02:18:51 RE(8):PBでの外部関数によるポインタの使用 By ryochan
13111 00/09/05 18:34:36 PBでの外部関数によるポインタの使用(総括のコメント) By M.M
13107 00/09/05 17:45:23 RE(6):PBでの外部関数によるポインタの使用(7):API引数 By ryochan
13106 00/09/05 17:34:59 RE(5):PBでの外部関数によるポインタの使用(6):ref宣言 By ryochan
13105 00/09/05 17:33:57 RE(4):PBでの外部関数によるポインタの使用(5):string By ryochan
13104 00/09/05 17:33:11 RE(3):PBでの外部関数によるポインタの使用(4):string By ryochan
13103 00/09/05 17:31:00 RE(2):PBでの外部関数によるポインタの使用(3):構造体2 By ryochan
13102 00/09/05 17:30:14 RE(1):PBでの外部関数によるポインタの使用(2):構造体 By ryochan
13101 00/09/05 17:28:56 PBでの外部関数によるポインタの使用(1):ポインタの説明 By ryochan

カテゴリ:スクリプトの記述
日付:2000年09月05日 17:45 発信者:ryochan
題名:RE(6):PBでの外部関数によるポインタの使用(7):API引数

***API引数:LPCTRとLPTCTRについて***
>ref付きでも問題なし
引数にrefを付けても、付けなくてもいいというのは
気持ち悪いですよね。
なぜどっちでもいいのかというと(7)のrefの説明と
(3)で書いたconst修飾子、というポインタの修飾子が
関係してくるのです。
const修飾子とは、定数ポインタ、
すなわちreadonly、値を書き換えてはいけない宣言なのです。
ポインタって、特に参照機能ではなく、
要はスピード面を追求したり、文字列を渡したり
するために使用する場合もありますが、
あくまで参照渡しなので開発時にうっかり
書き換えてしまう可能性があります。
ポインタ定数はこれを防ぐ為に存在します。
PBの関数にもこのreadonly指定がありますね。この意味です。
そのため、ポインタについて、処理の最初から最後までサイズと
そのメモリに格納されている値が保証されます。
refをつけると(7)で説明したように、「書き込むよ」と
宣言しているのに、書き込みは100%起こりません。
従ってconst修飾子宣言の別名文字列ポインタ
「LPCTR」と「LPCTSTR」の様に「C付き」宣言されたAPIについては
refも付けても正常に動きますが、本当はPBの機能の面から考えると
必要ないということになります。

以上です。占有してしまい、すみませんでした。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.