首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mathlink (Wolfram Mathematica)的REPL (读取-求值-打印循环)

使用Mathlink (Wolfram Mathematica)的REPL (读取-求值-打印循环)
EN

Stack Overflow用户
提问于 2012-01-24 00:54:58
回答 1查看 308关注 0票数 1

我是Mathlink的新手,在将它集成到我的代码中之前,我试图编写一个小的REPL来适应它。代码如下(省略了不相关的部分,很抱歉C和C++的可怕混合):

代码语言:javascript
复制
int main(int argc,char **argv)
{
    init_and_openlink(argc,argv);

    while(!feof(stdin))
    {
        int pkt;
        char buf[1024];

        if(!fgets(buf,1024,stdin))
            continue;

        MLPutFunction(lp,"EnterTextPacket",1);
        MLPutString(lp,buf);
        MLEndPacket(lp);

        while(((pkt=MLNextPacket(lp),pkt))&&(pkt!=RETURNPKT))
        {
            MLNewPacket(lp);

            if(MLError(lp))
                return 1;
        }

        const char *result;
        MLGetString(lp,&result);
        printf("%s\n",result);
        MLReleaseString(lp,result);
    }

    return 0;
}

但它似乎一点也不起作用。我曾尝试用一条MLNextPacket指令替换while循环,但无济于事;我花了几个小时搜索Mathlink文档,但那个文档太乱了!我哪里做错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 03:02:50

EnterTextPacket MathLink数据包将使内核返回封装在ReturnTextPacket MathLink数据包中的结果。尝试将while循环中的条件更改为:

代码语言:javascript
复制
while(((pkt=MLNextPacket(lp),pkt))&&(pkt!=RETURNTEXTPKT))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8975409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档