「構造体」の版間の差分
提供:AB開発Wiki
ナビゲーションに移動検索に移動
編集の要約なし |
細 (+Category:言語仕様) |
||
(2人の利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
構造体を利用すると、複数の様々なデータ型を一つにまとめて管理できます。ABではクラスは参照型なのに対し、構造体は値型です。構造体はC/C++の構造体とビット単位で互換性を持ち、低レベルAPIを操作する場合に有効な手段となります。内部がブラックボックス化されるクラスとは異なり、構造体はデータ配置の順序や型サイズ、アラインメントに気を配りながら扱う必要があります。 | |||
== 構造体の定義 == | == 構造体の定義 == | ||
'''Type''' [Align(''n'')] ''TypeName'' | '''Type''' [Align(''n'')] ''TypeName'' | ||
5行目: | 7行目: | ||
=== 項目 === | === 項目 === | ||
;n | |||
:アラインメントをバイト単位で指定できます。指定する値は1,2,4,8,16のいずれかでなければなりません。 | |||
;TypeName | |||
:構造体の名前を指定します。 | |||
;Members | |||
:構造体を構成するメンバ(複数可)を指定します。"Member As Type" などのように、メンバ名・データ型を指定します。 | |||
=== 備考 === | |||
小さなデータを扱う場合、値型である構造体は非常に軽い動作を提供してくれますが、大きなデータを扱うときには、データ量に注意しなければなりません。例えば、下記のようなコードは構造体のハードコピーが行われ、構造体サイズが実行速度に影響を及ぼします。 | |||
Type DATAINFO | |||
a[MAX] As Long | |||
Type | |||
End Type | End Type | ||
Sub Proc(data As DATAINFO) | |||
... | |||
End Sub | |||
Dim data As DATAINFO | |||
Dim data2 As DATAINFO | |||
... | |||
data = data2 'ハードコピーが行われる | |||
Proc(data) 'ハードコピーが行われる | |||
[[Category:言語仕様|こうそうたい]] | |||
: | |||
2007年8月6日 (月) 02:39時点における最新版
構造体を利用すると、複数の様々なデータ型を一つにまとめて管理できます。ABではクラスは参照型なのに対し、構造体は値型です。構造体はC/C++の構造体とビット単位で互換性を持ち、低レベルAPIを操作する場合に有効な手段となります。内部がブラックボックス化されるクラスとは異なり、構造体はデータ配置の順序や型サイズ、アラインメントに気を配りながら扱う必要があります。
構造体の定義
Type [Align(n)] TypeName Members End Type
項目
- n
- アラインメントをバイト単位で指定できます。指定する値は1,2,4,8,16のいずれかでなければなりません。
- TypeName
- 構造体の名前を指定します。
- Members
- 構造体を構成するメンバ(複数可)を指定します。"Member As Type" などのように、メンバ名・データ型を指定します。
備考
小さなデータを扱う場合、値型である構造体は非常に軽い動作を提供してくれますが、大きなデータを扱うときには、データ量に注意しなければなりません。例えば、下記のようなコードは構造体のハードコピーが行われ、構造体サイズが実行速度に影響を及ぼします。
Type DATAINFO a[MAX] As Long End Type Sub Proc(data As DATAINFO) ... End Sub Dim data As DATAINFO Dim data2 As DATAINFO ... data = data2 'ハードコピーが行われる Proc(data) 'ハードコピーが行われる