2013-08-22 520 views
1

我刚开始学习BASIC和使用Stackoverflow。这是我在FBIDE的代码。该错误信息是:Freebasic编译失败

 
42 variable not declared : var1 in 'input "Enter Function Number" ;var1/
- 
32 expected 'END IF' found 'end' in 'end sub'/ 
- 
32 expected 'END IF' in 'end sub' 
- 

代码:

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 

回答

2

在你的程序中的变量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(在我发布的上面的代码片段中修复)。

+0

非常感谢。最后一个问题 - 如果(它是做什么的)什么是结束? – florosus

+0

'END IF'用于结束一个有条件的程序部分块。只有当条件(例如'var1 = 1)为真时,才会执行'IF ... THEN'和'END IF'之间的所有内容。看看这里:http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgEndif – MrSnrub