您的位置:首页 > 其它

第一个TCL自定义命令测试通过

2015-12-19 10:39 295 查看
首次按一定要安装好环境,下载tcl8.5就可以,直接。./configure&&make&&make install  即可。

一、test.c

#include <tcl.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

int

PowObjCmd(ClientData clientData, Tcl_Interp *interp,

int objc, Tcl_Obj *CONST objv[])

{

Tcl_Obj *resultptr;

double x,y,result;

int error;

if (objc != 3) {

Tcl_WrongNumArgs(interp,2,objv,

"Usage : pow x y");

return TCL_ERROR;

}

error = Tcl_GetDoubleFromObj(interp, objv[1], &x);

if (error != TCL_OK) return error;

error = Tcl_GetDoubleFromObj(interp, objv[2], &y);

if (error != TCL_OK) return error;

result = pow(x,y);

resultptr = Tcl_GetObjResult(interp);

Tcl_SetDoubleObj(resultptr,result);

return TCL_OK;

}

int

Example_Init(Tcl_Interp *interp) {

Tcl_CreateObjCommand(interp, "pow", PowObjCmd,

(ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);

return TCL_OK;

}

二、makefile

#include <tcl.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

int

PowObjCmd(ClientData clientData, Tcl_Interp *interp,

int objc, Tcl_Obj *CONST objv[])

{

Tcl_Obj *resultptr;

double x,y,result;

int error;

if (objc != 3) {

Tcl_WrongNumArgs(interp,2,objv,

"Usage : pow x y");

return TCL_ERROR;

}

error = Tcl_GetDoubleFromObj(interp, objv[1], &x);

if (error != TCL_OK) return error;

error = Tcl_GetDoubleFromObj(interp, objv[2], &y);

if (error != TCL_OK) return error;

result = pow(x,y);

resultptr = Tcl_GetObjResult(interp);

Tcl_SetDoubleObj(resultptr,result);

return TCL_OK;

}

int

Example_Init(Tcl_Interp *interp) {

Tcl_CreateObjCommand(interp, "pow", PowObjCmd,

(ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);

return TCL_OK;

}

三、test.tcl

#!/usr/bin/tclsh

load ./libtest.so example

pow 2 4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: