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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.