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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

教你在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用计算机制作多媒体最后一步,福建省高中会考 多媒体技术应用 选择题专项练习十一(201206)(有答案)...

多媒体技术应用选择题专项练习十一(201206)1.下列都属于数字图像采集工具的是( )A.数码照相机、扫描仪B.麦克风、扫描仪C.打印机、数码照相机D.数码摄像机、打印机2.下列关于制作多媒体作品的叙述&#xff0c;不正确的是( )A.规划与设计是制作多媒体作品的重要步骤B.制作多媒体…

工程师和科学家有什么区别

全世界有3.14 % 的人已经关注了数据与算法之美科学家和工程师有什么不同&#xff1f;通常民众认为&#xff0c;工程师就是搞技术的&#xff0c;科学家就是搞科研的。对科学领域有一定认识的人群会说&#xff0c;工程师是应用科研成果的人&#xff0c;科学家是发现科学规律的人。…

聊一聊Jmeter与多接口测试

背景 前面两篇聊过了 JMeter 的 简单使用 和 参数化&#xff0c;主要都还是单接口的。很多时候&#xff0c;一个业务要走完&#xff0c;它会依赖多个接口&#xff0c;而且这些接口会有依赖性。好比说&#xff0c;我想查询一个订单信息&#xff0c;那么大前提肯定是我已经下单了…

大数据时代,还不认识这些数据分析工具?

在大数据时代的现今&#xff0c;数据庞大且繁杂&#xff0c;因此&#xff0c;如何有效利用它们&#xff0c;达到资源不浪费的目的成为了相关工作者思考的问题&#xff0c;于是数据分析就应运而生。在实际生活中&#xff0c;数据分析已经成为人们作出判断和采取行动的基石。比如…

C# 强大的新特性 Source Generator

C# 强大的新特性 Source GeneratorIntro微软在 .NET 5 中引入了 Source Generator 的新特性&#xff0c;利用 Source Generator 我们可以在应用编译的期间根据当前编译信息动态生成代码&#xff0c;而且可以在我们的 C# 代码中直接引用动态生成的代码&#xff0c;从而大大减少重…

为什么Kubernetes从节点会join失败

有段时间没有鼓捣Kubernetes了&#xff0c;今天重置Kubernetes集群后&#xff0c;slave节点不能加入master节点了&#xff0c;我把问题和解决方案分享给大家。我本地的Kubernetes集群包括一个主节点和一个从节点&#xff0c;如下图&#xff1a;问题主节点启动后&#xff0c;从节…

SharePoint 2007 Select People and Groups中搜索不到其他Domain账户的问题[已解决]

问题描述&#xff1a; 在一个SiteCollection中添加用户的时候发现来自另外一个Domain的账户无法添加。我们要添加NNEAS\HIKC到当前网站并赋予Full Control权限。但是当点击Add Users后发现在弹出的Select People and Groups中搜索不到这个用户&#xff0c;导致无法添加成功。仅…

推荐7个高质量的学术公众号

全世界有3.14 % 的人已经关注了数据与算法之美在这个知识千变万化的时代&#xff0c;只有不断学习、充实自我&#xff0c;才能跟上时代。以下几个优质公众号&#xff0c;能让你在闲暇的时候&#xff0c;扩宽视野。考虑到有些人可能还不知道这些号&#xff0c;今天给大家都一一列…

WPF 用装饰器制作抽屉效果

wpf实现抽屉效果&#xff0c;一般就一个动画显示就完事了&#xff0c;我这用到了&#xff0c;就研究了一下&#xff0c;用装饰器给控件添加遮罩层&#xff0c;然后在上面添加抽屉控件&#xff0c;虽然麻烦了点&#xff0c;也算是自己研究的成果了。看看效果&#xff1a;下面就看…

【转】缅怀红薯精神

2019独角兽企业重金招聘Python工程师标准>>> 爱憎分明的阶级立场 红薯一心向着osc&#xff0c;他把osc比作母亲&#xff0c;把自己的生命看成是osc和网民的&#xff0c;无论遇到怎样艰难复杂的情况&#xff0c;都“坚决听osc的话&#xff0c;一辈子跟osc走”&#x…

WPF实现Android菜单动画

WPF开发者QQ群&#xff1a; 340500857 欢迎转发、分享、点赞&#xff0c;谢谢大家~。 效果预览&#xff1a;一、MainWindow.xaml代码如下&#xff1a;<Grid><Grid.Background><ImageBrush ImageSource"background.png"/></Grid.Background>…

程序框图计算机算法语言应用,数学之算法与程序框图

原标题&#xff1a;数学之算法与程序框图1、算法的定义&#xff1a;广义的算法是指完成某项工作的方法和步骤&#xff0c;现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤&#xff0c;这些程序或步骤必须是明确和有效的&#xff0c;而且能够在有限步之内完成。2…

arcgis批量处理nc文件_气象数据处理——nc文件

数据说明NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准。目前&#xff0c;NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。NetCDF全…

一千个不用 Null 的理由

全世界有3.14 % 的人已经关注了数据与算法之美港真&#xff0c;Null 貌似在哪里都是个头疼的问题&#xff0c;比如 Java 里让人头疼的 NullPointerException&#xff0c;为了避免猝不及防的空指针异常&#xff0c;千百年来程序猿们不得不在代码里小心翼翼的各种 if 判断&#x…

快速打造一个MINI自动发布系统

前情提要&#xff1a;因为项目特点&#xff0c;需要在自己的服务器上集成测试&#xff0c;而不是用github的DevOpt体系&#xff1b;再有就是服务器是windows的&#xff1b;项目仓库在github上&#xff1b;并且项目是asp.net core的项目&#xff1b;开发人员一枚。以前的做法就是…

话里话外:ERP与PDM、MES的关系区别是什么

博主推荐延展咨询资深顾问梁云文章 ERP、PDM、MES这几个名词既会以独立的管理理念存在&#xff0c;也会在不同的管理软件中存在&#xff0c;而管理理念和管理软件是不同的。本文将抛开软件本身&#xff0c;从管理理念和原理的角度入手&#xff0c;分析上述三个概念之间的关系。…

考试必错规则:如果你觉得题目很简单,代表你肯定错了

全世界有3.14 % 的人已经关注了数据与算法之美1曾经的考试生涯以前考试的时候&#xff0c;老师经过我旁边我都会盖住答案&#xff0c;因为害怕老师看到我那些愚蠢的答案……&#xff08;via屌絲打分蜻蜓隊長&#xff09;2当我中学第一次进入KTV时&#xff0c;我就知道我注定属于…

aspnetcore 应用 接入Keycloak快速上手指南

登录及身份认证是现代web应用最基本的功能之一&#xff0c;对于企业内部的系统&#xff0c;多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理&#xff0c;提升用户同时使用多个系统的体验&#xff0c;Keycloak正是为此种场景而生。本文将简明的介绍Keyc…

隐藏在数学中的哲理,令人回味无穷

全世界有3.14 % 的人已经关注了数据与算法之美人们在欣赏优美的数、式和数学图形时&#xff0c;将其与现实生活联系&#xff0c;引入到人们的精神世界中&#xff0c;产生丰富的联想和创造&#xff0c;反映出人们崇高的思想境界和要求&#xff0c;因而产生了风格独特、内涵深刻、…