51Testing软件测试网Sj
]kp-W今天上完了19期的集成测试自动化TCL(Tool Command Language)课,给他们介绍了TCL的扩展机制以及用VC搭建一个TCL集成测试环境。后来有同学问我是否可以用VC写一个Tclsh那样的解释器,我想了想,难的都教了(扩展指令都会了),简单的还不会么,于是打开VC,歘歘歘……
a'g ^ {S%e|6e.J00}gs `;pMO D0N-bZM0自从给大家讲了Console版的tcl集成环境搭建指南后,我发现开始喜欢写“傻瓜式教程”了——呵呵,希望能够给更多的初学者带来有效的帮助。51Testing软件测试网!kxL+pH!DE:En
4[T'i ~9I0以下就直奔主题,带大家用VC写一个最简单的Tcl解释器。
NN5{&?c
Pj051Testing软件测试网Y;P]$dlG首先,打开VC(注:本人用的是VC 6.0英文版),点菜单File-->New,出现如下这张图,选择Projects-->Win32 Console Application,在Project Name那里填入MyTcl,然后点OK按钮。51Testing软件测试网@!C(z~V6v0B+l
X/J3kC~t4Vo0在接下来的向导窗口中选择“A Simple Application”,点Finish按钮。51Testing软件测试网2r#i.V6F/J
dM-`B2e1y3J#U0再接下来弹出一个New Project Information,点OK按钮。51Testing软件测试网m
Cfy F4kC7^j\F
51Testing软件测试网2yY3m{
N!P接着,双击VC项目工程的FileView(文件视图)里的MyTcl.cpp文件,输入代码如下:51Testing软件测试网^2]9NtPE
[CODE]51Testing软件测试网bDS"W&O0abtV8K#t
Xd@@w&a$qAA&w0// MyTcl.cpp : Defines the entry point for the console application.
z1i{~i?0// code by 51Testing.songfun51Testing软件测试网]'a@2Lay,]7YT
51Testing软件测试网(?GU/M"qp[3Rx#include "stdafx.h"
9d^[
Pq2R-E6Z*u0#include <tcl.h>
$x&y^n2{8m0V*\0/@@@GW0int Tcl_AppInit(Tcl_Interp *interp)
%WspbxxR$OmE0{ 51Testing软件测试网3A.O1H1Cg3y4u6IG
if (Tcl_Init(interp) == TCL_ERROR)51Testing软件测试网%DH/V x1r[n
{
2JGv0N!}Bf8fw0 return TCL_ERROR;
Oj!vT,d$m0 }51Testing软件测试网d BM t'AX
return TCL_OK;51Testing软件测试网;e0a(S0])G kN7fB
}
wt.L4[zw3}051Testing软件测试网/{1Tcn F'l$_+~int main(int argc, char *argv[])
Qh'i5z6tr0{51Testing软件测试网z3Q!KR&Q0[
Tcl_Main(argc, argv, Tcl_AppInit);
Teq
TXcc0 return 0;51Testing软件测试网 ]F:Y@;A4W n
n;fbK
}
6JLcu*`*m1A(K051Testing软件测试网;[*]}o0T]L!P[/CODE]
6QG'vZMa0R hmwB
sa&f
R'O0然后,点VC的菜单Project-->Add to Project-->Files,把tcl.h和tcl83.lib分别加进来。如图。51Testing软件测试网ws4jm6{'n.lJ
再在VC的菜单Tools-->Options的Directories里设置tcl83包的头文件路径和库文件路径。如图。
Pr$f~0i051Testing软件测试网u9X@0t-_I`最后,点VC的“感叹号”Execute(执行按钮),看到什么了?51Testing软件测试网?)K.b?iu
M
呵呵,是不是这个窗口和大家之前看到的那个tclsh应用程序很像啊?51Testing软件测试网O-Bx.vn1C9o
y$?
它就是我们自己写的tcl解释器,怎么样,很有成就感吧,嘻嘻,其实代码也没有多复杂对吧。51Testing软件测试网q@
r/wg(R
51Testing软件测试网(cR[L-|bH实际上,这个地方只是演示一个例子,我们放着tclsh和scrīpt.Net这样的tcl解释工具不用,却自己用VC写一个tcl解释器的目的是什么?正是为了使用它的扩展机制来扩展我们自己定义的命令。所以上述的例子本身的意义还不是很大,必须结合有效的扩展函数的实现才会显得更有意义(这也是我上课给大家讲的内容)。51Testing软件测试网YUR9epS/v*nE
2t:Ag SmNX0OK,本篇文章到此结束,大家有任何疑问可以随时和我交流,请各位不吝赐教啊,呵呵……
U(uT,W5GwQvgX g0