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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

教你在C 程序里調(diào)用TI-BASIC程序,看看是否有人對(duì)這個(gè)感興趣
昨天翻TIGCC的文檔,先瞅了瞅FAQ,話說(shuō)我看文檔有個(gè)習(xí)慣,就是先看目錄,再看FAQ,因?yàn)镕AQ匯集了很多人曾經(jīng)遇到過(guò)的問(wèn)題、犯過(guò)的錯(cuò)誤, 而且涵蓋各種不同難度,非常值得一看。

在FAQ中看到教人用C程序調(diào)用TI-BASIC程序的示范代碼,正好我最近在 研究TI-BASIC,就想試試,原來(lái)的例程如下,我加了一下注釋,你會(huì)發(fā)現(xiàn)C語(yǔ)言的特點(diǎn)是從右往左執(zhí)行:

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


最后在你的 main 函數(shù)里調(diào)用 progrun 就可以了,這里假設(shè)你已經(jīng)在 計(jì)算器上準(zhǔn)備好了一個(gè)名為 testprog 的TI-BASIC 程序
progrun ("testprog");

我用TIGCC在PC上編譯了一次,OK,又在 計(jì)算器上用GTC編譯了一次,也OK,下面是我稍作修改后的代碼,因?yàn)槔永餂](méi)有讓TI-BASIC程序帶參數(shù),我改寫(xiě)了一個(gè)帶參數(shù)版本的,其實(shí)簡(jiǎn)單,就是把你的PRGM的內(nèi)容全部傳到 progrun 里就可以了,然后把追加括號(hào)的語(yǔ)句注釋掉即可。不過(guò)這個(gè)帶參數(shù)的 功能不完全,因?yàn)門(mén)IGCC的 main函數(shù)沒(méi)有 argc 和 argv,所以我還沒(méi)搞清楚 如何在主程序中帶參數(shù),因此這里默認(rèn)的PRGM程序名稱為 apic(1,2) ,有兩個(gè)參數(shù),所以你需要事先在計(jì)算器上創(chuàng)建一個(gè)名稱為apic的PRGM程序,這個(gè)程序帶兩個(gè)參數(shù)。

下面是代碼:

#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界面執(zhí)行:
cb()

轉(zhuǎn)載于:https://my.oschina.net/freeblues/blog/62925

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。