Skip to content

FB_UNIQUEID_PUSH


编译器执行的内置定义(宏)。

语法

` FB_UNIQUEID_PUSH( stack-id )

`

参数

stack-id

要压入的栈名称

描述

向由 stack-id 标识的栈压入一个新的唯一标识符(栈大小增加 1)。

__FB_UNIQUEID__ 用于获取栈顶标识符,__FB_UNIQUEID_POP__ 用于从栈弹出标识符)

注意:

  • "stack-id" 名称本身与所有其他符号属于独立命名空间。

  • 栈中只能包含"唯一标识符"。

  • "唯一标识符"是模块中唯一的 fb 符号名,不会与其他符号名冲突或遮蔽("唯一标识符"的名称形式为 "LT_xxxx",因此可能并非完全唯一)。

  • fb 内部使用 "LT_xxxx" 形式作为标签、符号、临时变量等(因此自版本 0.0 起,所有 fbc 程序都应避免将 fbc 符号命名为此形式)。

当此栈不再使用时,建议将其清空(最终应用的 __FB_UNIQUEID_POP__ 次数必须与该栈的 __FB_UNIQUEID_PUSH__ 次数相同)。

在使用的任意时刻,从开始累计应用的 __FB_UNIQUEID_POP__ 次数必须始终小于或等于累计应用的 __FB_UNIQUEID_PUSH__ 次数。

示例

另请参阅 __FB_UNIQUEID__ 示例。

start GeSHi

vb
' As the "unique identifiers" (used as jump labels) are successively pushed on to a stack,
' the jump-code bodies must be defined in the reversed order than the jump calls.

#macro go
    __FB_UNIQUEID_PUSH__( stk )
    Goto __FB_UNIQUEID__( stk )
    End If
#endmacro

#macro end_go
    __FB_UNIQUEID__( stk ):
    __FB_UNIQUEID_POP__( stk )
#endmacro
   
Dim As Integer N

Do
    Input "Enter a value between 1 and 4 (0 or empty input for exit) ? ", N
   
    If N = 0 Then go
    If N = 1 Then go
    If N = 2 Then go
    If N = 3 Then go
    If N = 4 Then go
    Continue Do
   
    end_go
        Print "You entered 4" : Continue Do
    end_go
        Print "You entered 3" : Continue Do
    end_go
        Print "You entered 2" : Continue Do
    end_go
        Print "You entered 1" : Continue Do
    end_go
        Print "End"           : Exit Do
Loop

Sleep

end GeSHi

另请参阅 __FB_UNIQUEID_POP__ 示例。

版本

  • 自 fbc 1.08.0 起

与 QB 的区别

  • FreeBASIC 新增

另请参阅

  • __FB_UNIQUEID_POP__
  • __FB_UNIQUEID__

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系