2013-08-22 251 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