讨论一下,C语言脚本怎么传入参数和返回结果。

mmcanyu 2009-11-02 02:56:22
如题,vc写的C语言解释程序,怎么给脚本传入参数,怎么让脚本运行完返回解释运算结果。
是从网上下载的BC版本改过来的。

class CWinC
{
public:
CWinC();
virtual ~CWinC();

private:
stCODE_BUF CodeBuf;
CInit hbInit;
CError Error;
protected:
CRunFUN runFun;
public:
char *error(void) { return Error.getErrorMsg();}

void SetEnv(void) { Destructor(); }
void SetCodeBuf(char *Buf);
bool Constructor(void);
bool Run(char *CodeBuf);
void Destructor(void);
};
这是解释语言的主类,调用时
CWinC winc;
CEdit *edit = (CEdit *)GetDlgItem(IDC_CODE);//脚本内容
CString temp;
edit->GetWindowText(temp);
winc.Run(temp.GetBuffer(temp.GetLength()));

这片代码不能说明什么,有经验的朋友能不能说一下大致的研究方向。
...全文
193 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmcanyu 2009-11-09
  • 打赏
  • 举报
回复
SvNV(get_sv("a", FALSE))
SvPV(get_sv("a", FALSE), n_a)
SvIV(get_sv("a", FALSE)

谢谢楼上,看来可以建个库函数,把这个库函数返回内容保存到主类成员变量。
o_yale_o 2009-11-05
  • 打赏
  • 举报
回复
1。你可以参考Perl嵌入VC的例子:
#include "stdafx.h"
#include <EXTERN.h>
#include <perl.h>

static PerlInterpreter *my_perl;
void main (int argc, char **argv, char **env)
{
STRLEN n_a;
char *embedding[] = { "", "-e", "0" };
PERL_SYS_INIT3(&argc,&argv,&env);
my_perl = perl_alloc();

perl_construct( my_perl );
perl_parse(my_perl, NULL, 3, embedding, NULL);
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
perl_run(my_perl);

// eval_pv(" $a = 3; $a **= 2", TRUE);
eval_pv(" $a = 3; $a **= 2", TRUE);
printf("a = %d\n", SvIV(get_sv("a", FALSE)));
eval_pv("$a = 3.14; $a **= 2", TRUE);
printf("a = %f\n", SvNV(get_sv("a", FALSE)));
eval_pv(" {$a = '1'; $a = reverse($a);}", TRUE);
printf("a = %s\n", SvPV(get_sv("a", FALSE), n_a));

eval_pv("print 'Please enter first number:';\
$number1 = <STDIN>;\
chomp $number1;\
$number2 = <STDIN>;\
chomp $number2;\
$sum = $number1 + $number2;",
TRUE
);
printf("sum = %f\n", SvNV(get_sv("sum", FALSE)));
eval_pv("print 'hello'", TRUE);
// eval_pv("my $today = new Date;$today->setDate( 7, 14, 2000 );print( $today->month() );print( '\n' );$today->print();print( '\n' );", TRUE);

//eval_pv("use strict; $a = 'rekcaH lreP rehtonA tsuJ'; $a = reverse($a);", TRUE);
//printf("a = %s\n", SvPV(get_sv("a", FALSE), n_a));

perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();
int i;
scanf("%d",&i);
}

2。Pyoth脚本嵌入VC例子:
#include "stdafx.h"
#include "d:\Python25\include\Python.h"

int main(int argc, char* argv[])
{
Py_Initialize();
PyRun_SimpleString("print '---Begin---'\n"
"from time import time,ctime\n"
"print '3+5=',3+5 \n"
"print 'Today is',ctime(time())\n"
"print '---End---'\n");
Py_Finalize();
return 0;
}
hityct1 2009-11-05
  • 打赏
  • 举报
回复
结果应该是传到temp中了吧?

楼主9楼的比喻,难道是要做“文摘”?
mmcanyu 2009-11-03
  • 打赏
  • 举报
回复
现在我的脚本就像
金山快译把一篇英文文章翻译成中文(假设翻译地很准确),
但是到底这篇英文讲的什么内容呢,金山快译并不清楚。
onlykobe 2009-11-03
  • 打赏
  • 举报
回复
我也和楼主有同样的问题。来看看学习学习
mmcanyu 2009-11-03
  • 打赏
  • 举报
回复
再顶一下.

一个脚本需要给它传入参数,结果要返回给运用程序。
MoXiaoRab 2009-11-02
  • 打赏
  • 举报
回复
???C语言脚本??
jameshooo 2009-11-02
  • 打赏
  • 举报
回复
从这个类可以看出,它根本没提供任何跟返回值有关的方法或者成员变量。
mmcanyu 2009-11-02
  • 打赏
  • 举报
回复
回楼上,看过了。
目前基本可以解释执行了,只能解释它啊,没有交流和沟通。
hityct1 2009-11-02
  • 打赏
  • 举报
回复
楼主先看看《编译原理》?
mmcanyu 2009-11-02
  • 打赏
  • 举报
回复
回楼上,
就是脚本是用C语言写的,然后用C++写程序解释这段脚本。
ToperRay 2009-11-02
  • 打赏
  • 举报
回复
你这个c语言解释程序是个什么概念?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧