【问题标题】:Freebasic Compilation FailFreebasic 编译失败
【发布时间】:2013-08-22 18:22:04
【问题描述】:

我刚刚开始学习 BASIC 并使用 Stackoverflow。这是我在 FBID 中的代码。错误信息是:

42 变量未声明:var1 in 'input "Enter Function Number" ;var1 / - 32 预期的 'END IF' 在 'end sub' 中找到 'end'/ - 'end sub' 中的 32 应为 'END IF' -

代码:

declare sub premain
declare sub main
dim var1 as integer
premain
sub premain
  print "EMC ALPHA v1.0"
  main
end sub 

sub main
   print "Functions:"
   print "1.Add"
   print "2.Subtract"
   print "3.Multiply"
   print "4.Divide"

   input "Enter Function Number" ;var1
   if var1=1 then
      print "HElo"
end sub 

【问题讨论】:

    标签: fault basic freebasic


    【解决方案1】:

    在您的程序中,变量var1 在主程序范围内声明。除非您使用 SHARED 关键字,否则在子程序(过程:SUBFUNCTION)中将无法访问此变量。然后该变量将在您的程序中全局可用。

    更好的方法是使用局部变量:

    declare sub premain
    declare sub main
    
    premain
    sleep: end
    
    
    sub premain
      print "EMC ALPHA v1.0"
      main
    end sub 
    
    sub main
       print "Functions:"
       print "1.Add"
       print "2.Subtract"
       print "3.Multiply"
       print "4.Divide"
       '****vv HAVE A LOOK HERE vv****
       dim var1 as integer
       input "Enter Function Number" ;var1
       if var1=1 then
          print "HElo"
       end if   '<== this was missing, too.  ***** ("Expected END IF")
    end sub 
    

    全局变量(由 SHARED 创建)应该很少使用,例如用于程序范围的配置/设置,例如用户在多语言应用程序中选择的语言。

    此外,您的程序缺少END IF(已在我的帖子中上面的代码 sn-p 中修复)。

    【讨论】:

    • 非常感谢。最后一个问题——如果结束(它是做什么的)是什么?
    • END IF 用于结束一个条件程序部分块。 IF ... THENEND IF 之间的所有内容仅在条件(例如 var1=1)为真时执行。看看这里:freebasic.net/wiki/wikka.php?wakka=KeyPgEndif
    猜你喜欢
    • 2021-10-07
    • 2021-06-14
    • 2021-01-29
    • 2018-11-06
    • 1970-01-01
    • 2013-02-01
    • 2016-08-16
    • 2015-09-07
    • 2019-08-06
    相关资源
    最近更新 更多