|
发表于 2003-2-19 16:35:00
|
显示全部楼层
//以下以SDS或sds開頭的函數、變量、常量是和ads相應的,如sds_resbuf=resbuf,sds_link=ads_link,執行後,在指令行會有“mycmdnil"
//-----------------------------------------------------------------------------
#define ARRAYELEMENTS(array) (sizeof(array)/sizeof((array)[0]))
struct func_def
{
char *func_name;
int (*func) (struct sds_resbuf *);
};
int mycmd_main(resbuf *rb);
static struct func_def func_table[] =
{
{"c:mycmd", mycmd_main}
};
int main(int, char **);
int invokefun(void);
int funcload(void);
int main(int argc, char** argv)
{
short scode = RSRSLT; // Normal result code (default)
int stat;
char errmsg[80];
ads_init(argc, argv); // Open communication with lisp
for ( ;; )
{ // Request/Result loop
if ((stat = sds_link(scode)) = ARRAYELEMENTS(func_table))
{
sds_fail("收到不存在的函數代碼.");
return RTERROR;
}
rb = sds_getargs();
val = (*func_table[val].func)(rb);
sds_relrb(rb);
return val;
}
//////////////////////////功能函數//////////////////////////////////
int mycmd_main(resbuf *rb)
{
ads_alert("in");
return RTNORM;
} |
|