?? finc-0.2-feature.txt
字號:
FinC 0.2功能概述---------------和0.1版本相比的bug修正- 數組修正(0.1版數組基本不可用,會導致極大的內存泄漏)。- 逗號運算的修正。- 條件運算的修正。- 全局變量尋找不到的修正。0.2版本實現了的功能- 字符串數據類型的改進,把string和native string合并,當調用系統函數時會自動轉換成native string。- 結構類型的支持(此處還有待測試,可能會存在嚴重的bug,主要可能出在和系統函數庫交互時)。- 包的支持。- 變量聲明的提高,可以采用變量列表聲明,同時也可以在聲明時進行變量的初始化操作(數組類型,結構類型除外)。和C99類似,可以在函數體內任何地方聲明,而不局限于函數體頭。- 和系統函數庫的任意變量交互。- 變量內存的自動分配與釋放(并不是100%,可能存在Bug,有待進一步測試)。- continue, break的支持。- 函數調用的改進。finc-0.2版本新功能腳本例子:-------------------------- 變量聲明:int var1, var2, var3;int var1=100, var2;void test(){ int var1; statement... string str1; statement...}- 包聲明:package "libc.so"{ void printf(string format, ...); void scanf(string format, ...);};package{ void printf(string format, ...); void scanf(string format, ...);};說明:第一種方式,在解釋器編譯是并不一定需要把動態鏈接庫編譯進去。在import package時,解釋器會自動載入動態鏈接庫。通過這樣載入包后,你可以在自己的腳本中使用其中聲明的函數(此例中的是printf和scanf)。第二種方式,指的是加載解釋器中的函數,也就是說在解釋器中一定要能夠調用這個函數,有可能這個函數是解釋器鏈接的,也可能是你自己寫的,但一定能夠調用。通過這個“默認包”加載后,你也能夠在你的腳本中使用這個函數(此例中的是printf和scanf)。- 結構型數據類型struct person{ string name; bool man; int age; int height;...};void test(){ person ffxz; ffxz.name = "fayfay"; ffxz.man = true; ffxz.age = 24; ffxz.height = 180; ....}- 和系統函數庫的交互:例如對于系統庫函數:FILE *fopen (const char* path, const char* mode);在腳本中的交互:1、構建FILE結構體由于一般都是采用它的指針形式,所以可以直接用pointer類型(pointer類型相當于C中的void*,可以指向任何數據類型,目前指向函數除外)。當然也可能會用到FILE中的一些成員,這時可以這樣來完成:一般的,你可以把原來C中定義的結構體全部轉換成FinC結構體的聲明形式,當然了為了偷懶,你也可以這樣(假設你只對_flags域感興趣)struct FILE/*詳細定義,請看libc中相應的頭文件*/{ int _flags; pointer others;};2、加載鏈接庫:package "libc.so"{ pointer fopen (string path, string mode);};3、調用void test(){ pointer fd; int flags; fd = fopen("/home/ffxz/test.txt", "r"); flags = (FILE)content_of(fd)._flags;}FinC的語言特點及和C的差別,請參看FinC語言參考指南。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -