FreeBASIC マニュアルのトップに戻る

FreeBASIC FB_UNIQUEID_POP

目次→言語文書→その他→組み込み定義__FB_UNIQUEID_POP__←オリジナル・サイト

__FB_UNIQUEID_POP__ 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

コンパイラーによって実行される固有の定義(マクロ)。

構文:
__FB_UNIQUEID_POP__( stack-id )

パラメータ:
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からの違い:
参照:
組み込み定義 に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2021-10-11 09:33:48
日本語翻訳:WATANABE Makoto、原文著作者:fxm

ホームページのトップに戻る

表示-非営利-継承