国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
FreeBASIC學(xué)習(xí)筆記-包含指令

9.1 文件包含

        FreeBASIC文件包含有三個(gè)指令:#Include,句包含另一個(gè)源文件的內(nèi)容;#IncLib,包含一個(gè)庫(kù)文件;#libpath,將庫(kù)搜索路徑添加到鏈接器的搜索路徑列表中。

        #Include在其指令出現(xiàn)的位置插入另一個(gè)文件的源代碼。這具有從所包含的文件編譯源代碼的效果,就好像它是包含它的源文件的一部分。一旦編譯器到達(dá)了include文件的末尾,原始源文件就會(huì)繼續(xù)編譯。這使得文件可以根據(jù)功能分成多個(gè)文件,在由多個(gè)模塊組成的程序中具有聲明的單個(gè)文件是有用的。您可以在include文件中包含文件,這樣可以避免將原始文件包含在其中,只有在編譯后才會(huì)產(chǎn)生結(jié)果。通常,include文件的擴(kuò)展名為.bi,主要用于聲明庫(kù)的過(guò)程或函數(shù)或變量,但任何有效的源代碼都可能存在于包含的文件中。

       Once說(shuō)明符告訴編譯器只包含該文件一次,即使它被源代碼包含多次。元命令$Include是#Include的替代形式,主要是為了兼容QuickBASIC存在的。正常使用建議用#include。

        根據(jù)需要,編譯器將自動(dòng)轉(zhuǎn)換路徑分隔符('/'和'\'),以正確加載文件。文件名稱可以是絕對(duì)路徑或相對(duì)路徑。對(duì)于相對(duì)路徑,或根本沒(méi)有路徑,include文件按以下順序進(jìn)行搜索:1、相對(duì)于源文件的目錄;2、相對(duì)于當(dāng)前工作目錄;3、相對(duì)于使用-i命令行選項(xiàng)指定的添加目;4、FreeBASIC安裝的包含文件夾(FreeBASIC\inc),其中FreeBASIC是fbc可執(zhí)行文件所在的文件夾)

語(yǔ)法:


例如:FireFly默認(rèn)引用的文件


        #IncLib在鏈接過(guò)程中包含一個(gè)庫(kù),就像用戶在命令行中指定了-l libname一樣。FreeBASIC的庫(kù)文件以.a為后綴,例如:包含一個(gè)libmystuff.a的庫(kù)文件可以用語(yǔ)句#inclib "mystuff" 來(lái)實(shí)現(xiàn)。
        #libpath將庫(kù)搜索路徑添加到鏈接器的搜索路徑列表中,就像在命令行中使用'-p'選項(xiàng)指定的一樣。路徑與調(diào)用fbc的工作目錄相對(duì),而不是相對(duì)于源文件的目錄。如果路徑不存在并且編譯和鏈接將繼續(xù),則不會(huì)生成錯(cuò)誤。例如搜索lib目錄下的外部庫(kù)則使用#libpath “l(fā)ib”。
9.2 宏定義
        FreeBASIC的宏定義有兩種:#Define和#Macro。#Define允許聲明基于文本的預(yù)處理器宏。一旦編譯器看到#Define定義的標(biāo)識(shí)符,則用它body 替換該標(biāo)識(shí)符。body 可以為空。替換是遞歸完成的,直到?jīng)]有更多的標(biāo)識(shí)符可以替換,編譯器可以繼續(xù)分析生成的代碼。#UnDef用于取消定義先前使用#Define定義的標(biāo)識(shí)符。
        Parameters 將define轉(zhuǎn)換為類似函數(shù)的宏,允許將文本參數(shù)傳遞給宏。body 中的任何參數(shù)名稱的出現(xiàn)將在擴(kuò)展期間由給定的參數(shù)文本替換。
        注意:在類似函數(shù)的宏聲明中,標(biāo)識(shí)符(Identifier)之后必須是括號(hào)“(”,之間不能有任何空格,否則編譯器會(huì)將其視為body 的一部分。
        如果在模塊級(jí)別定義,定義在整個(gè)模塊中是可見(jiàn)的。如果在具有范圍(Sub,F(xiàn)or..Next,While..Wend,Do..Loop,Scope..End Scope等)的復(fù)合語(yǔ)句中定義了標(biāo)識(shí)符 ,則標(biāo)識(shí)符 定義僅在該范圍內(nèi)可見(jiàn)。另一方面,命名空間對(duì)define的可見(jiàn)性沒(méi)有任何影響??梢允褂?pp編譯器選項(xiàng)檢查宏擴(kuò)展的結(jié)果。#Define通常用于聲明常量,Const語(yǔ)句則是一種更為安全的聲明方法。
語(yǔ)法:


例如:


        #Macro其實(shí)就是#Define的多行形式,語(yǔ)法如下:


例如:


9.3 條件編譯

        條件編譯語(yǔ)句即是有條件的在編譯時(shí)選擇一定的語(yǔ)句參與編譯,F(xiàn)reeBASIC的條件編譯語(yǔ)句有#if…#elseif…#else…#endif(這里可以是一個(gè)整體,也可以單獨(dú)分開,跟if..else語(yǔ)句的用法相同,只是一個(gè)用于編譯時(shí),一個(gè)用于運(yùn)行時(shí))defined (symbol_name ) 用來(lái)判斷給定符號(hào)名稱是否定義,如果符號(hào)已被定義,defined預(yù)處理函數(shù)將返回真(True)如果符號(hào)未知,則返回假(False)。此語(yǔ)句通常配合#if條件語(yǔ)句來(lái)判斷。

語(yǔ)法:


例如:


        #IfDef和#IfnDef用來(lái)判斷標(biāo)識(shí)符(symbol)是否定義,必須用#EndIf來(lái)結(jié)束。通常我們用#IfnDef來(lái)判斷頭文件是否多次引用。

語(yǔ)法:#IfDef


例如:


語(yǔ)法:#ifnDef


例如:


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C語(yǔ)言 條件編譯詳解
嵌入式C語(yǔ)言編程規(guī)范(個(gè)人規(guī)約)
C語(yǔ)言中的宏定義
#define、const、typedef的差別
簡(jiǎn)單的c++程序
手把手教你如何優(yōu)化C語(yǔ)言程序
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服