日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TI-89T 教你在C程序里调用TI-BASIC程序,看看是否有人对这个感兴趣

發布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TI-89T 教你在C程序里调用TI-BASIC程序,看看是否有人对这个感兴趣 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

教你在C 程序里調用TI-BASIC程序,看看是否有人對這個感興趣
昨天翻TIGCC的文檔,先瞅了瞅FAQ,話說我看文檔有個習慣,就是先看目錄,再看FAQ,因為FAQ匯集了很多人曾經遇到過的問題、犯過的錯誤, 而且涵蓋各種不同難度,非常值得一看。

在FAQ中看到教人用C程序調用TI-BASIC程序的示范代碼,正好我最近在 研究TI-BASIC,就想試試,原來的例程如下,我加了一下注釋,你會發現C語言的特點是從右往左執行:

// 在C中定義一個 函數,參數是TI-BASIC的程序名稱 void progrun(const char *name) { // 定義字符串變量 char fname[25]; // 定義一個HANDLE型指針變量 h,h 將來使用時會按照HANDLE結構動態分配一個內存塊,把內存塊入口地址關聯到 h ,h 實際是一個HANDLE結構型的內存指針變量 HANDLE h; // 把TI-BASIC程序名稱拷貝到我們定義的字符串變量 fname 中 strcpy (fname, name); // 在 fname 追加"()",假設fname里原來的數據是"myprgm",執行strcat后就變成"myprgm()" strcat (fname, "()"); // 解析字符串fname里的表達式,并且把tokenized(標識化)的表達式內容全部壓入到表達式棧中 push_parse_text (fname); // 這個語句要從后往前分析:HS_popEStack () 做的是分配一個內存區域,然后把剛才壓棧的表達式出棧,并且把出棧的內容拷貝到新分配的內存塊里,最后把這個內存塊的地址當做一個結構指針變量返回給 h h = HS_popEStack (); TRY // 調用 NG_execute 來執行 h ,也就是執行 TI-BASIC 程序 NG_execute (h, FALSE); FINALLY // 最終執行完畢,釋放 h 使用的內存 空間 HeapFree (h); ENDFINAL }


最后在你的 main 函數里調用 progrun 就可以了,這里假設你已經在 計算器上準備好了一個名為 testprog 的TI-BASIC 程序
progrun ("testprog");

我用TIGCC在PC上編譯了一次,OK,又在 計算器上用GTC編譯了一次,也OK,下面是我稍作修改后的代碼,因為例子里沒有讓TI-BASIC程序帶參數,我改寫了一個帶參數版本的,其實簡單,就是把你的PRGM的內容全部傳到 progrun 里就可以了,然后把追加括號的語句注釋掉即可。不過這個帶參數的 功能不完全,因為TIGCC的 main函數沒有 argc 和 argv,所以我還沒搞清楚 如何在主程序中帶參數,因此這里默認的PRGM程序名稱為 apic(1,2) ,有兩個參數,所以你需要事先在計算器上創建一個名稱為apic的PRGM程序,這個程序帶兩個參數。

下面是代碼:

#define USE_TI89 #define OPTIMIZE_ROM_CALLS #define MIN_AMS 101 #include <tigcclib.h> void progrun(const char *name) { char fname[25]; HANDLE h; strcpy (fname, name); //strcat (fname, "()"); push_parse_text (fname); h = HS_popEStack (); TRY NG_execute (h, FALSE); FINALLY HeapFree (h); ENDFINAL } // Main Function void _main(void) { progrun ("apic(0,0)"); //progrun ("apic(0,100)"); ngetchx(); }


這里是編譯好的程序,用法就是直接在home界面執行:
cb()

轉載于:https://my.oschina.net/freeblues/blog/62925

總結

以上是生活随笔為你收集整理的TI-89T 教你在C程序里调用TI-BASIC程序,看看是否有人对这个感兴趣的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。