コンパイラーによって実行される固有の定義(マクロ)。
構文:
__FB_UNIQUEID_POP__( stack-id
)
パラメータ:
記述:
stack-id で識別されるスタックから、識別子を取り出します(スタックのサイズが 1 減少します)。
(
__FB_UNIQUEID__ を使うと、スタックの最上位にある識別子を取得でき、
__FB_UNIQUEID_PUSH__ を使うと、新しい一意の識別子をスタックに追加できます)
注意:
-
「stack-id」名自体は、他のすべてのシンボルと別の名前空間です。
-
スタックには「一意の識別子」のみ含めることができます。
-
「一意の識別子」は、モジュールに固有の fb シンボルの名前なので、他のシンボル名と競合したり、影を付けたりすることはありません。(「一意の識別子」は、名前として「LT_xxxx」の形式になるため、完全に一意ではない場合があります)
-
fb は、ラベル、シンボル、一時変数などに、内部的に「LT_xxxx」という形式を使います。(したがって、バージョン 0.0 以降の fbc プログラムでは、この形式の fbc シンボル名を付けることは避けてください)。
このようなスタックが使われなくなった場合は、空にすることを推奨します(最後に、このスタックに
__FB_UNIQUEID_PUSH__ と同じ数の
__FB_UNIQUEID_POP__ が適用されている必要があります)。
使うときはいつでも、最初から適用される
__FB_UNIQUEID_POP__ の数は、常に適用される
__FB_UNIQUEID_PUSH__ の数以下である必要があります。
例:
__FB_UNIQUEID__ の例も参照下さい。
#macro repeat ? ( count
) '' with user named
variable
Scope
Dim __counter__ As UInteger = count
While(
__counter__)
#endmacro
#macro end_repeat
'' with user named variable
__counter__ -= 1
Wend
End
Scope
#endmacro
Print "With user named variable:"
repeat 3
Print " outer"
repeat 2
Print " --- inner"
end_repeat
end_repeat
Print
#undef repeat
#undef end_repeat
#macro repeat ? ( count ) ''
with "unique identifier" variable
__FB_UNIQUEID_PUSH__( ctx )
Dim
__FB_UNIQUEID__( ctx ) As UInteger = count
While( __FB_UNIQUEID__( ctx ) )
#endmacro
#macro end_repeat ''
with "unique identifier" variable
__FB_UNIQUEID__( ctx ) -=
1
Wend
__FB_UNIQUEID_POP__( ctx )
#endmacro
Print "With
""unique identifier""
variable:"
repeat 3
Print " outer"
repeat 2
Print " --- inner"
end_repeat
end_repeat
Sleep
/' Output:
With user named
variable:
outer
--- inner
---
inner
outer
--- inner
---
inner
outer
--- inner
---
inner
With "unique
identifier" variable:
outer
--- inner
--- inner
outer
--- inner
--- inner
outer
--- inner
--- inner
'/
'__counter__' 変数は [Scope...End Scope] ブロックで定義されているため、コードの最初の部分が機能し、ネストが可能になります。
コードの 2 番目の部分は、「一意の識別子」(コンパイラーによって提供される)を使用しているため、([Scope...End Scope] ブロックなしで)機能します。
__FB_UNIQUEID_PUSH__ の例も参照下さい。
バージョン:
QBからの違い:
参照: