乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 99|回复: 5

[求助]在ADS內,當一個指令執行完後,會有一個nil的返回值,如何去除?

[复制链接]

14

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2003-2-17 23:32:00 | 显示全部楼层 |阅读模式
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2003-2-18 09:34:00 | 显示全部楼层
可能我没能理解你的意图。
ADS函数的返回值用于检查函数执行过程是否正确,你若认为不需要用它,完全可以不去理会它。不知道为什么要去除它?
void MyADSCommand(...)  //函数参数表略
{
  ads_command(...);
}
这样好象ads_command()函数返回的int值就不会起作用了。
更好例子你可以用ObjARXWiz向导生成一段ARX示例代码,其中的AddCommand()函数就是引用了acedRegCmds->addCommand()函数,并忽略返回值。
回复

使用道具 举报

14

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2003-2-18 11:14:00 | 显示全部楼层
當在指令行輸入mycmd後,會調用mycmd_main,當然要先聲明int mycmd_main(struct resbuf *rb);在mycmd_main內,如果沒有用ads_rtnil或其他的返回函數,程序執行到最後,會在指令行自動返回nil,結果為"Command:mycmdnil",
不知能否明白!
回复

使用道具 举报

2

主题

46

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2003-2-18 13:26:00 | 显示全部楼层

用以下语句:
int mycmd_main(struct resbuf *rb)
{
...
  return RTNORM;
}
回复

使用道具 举报

14

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2003-2-18 14:22:00 | 显示全部楼层
不行的,本來對於int mycmd_main(...)函數,最後的返回值就是你所寫的,但就是在指令行會顯示nil[br]
回复

使用道具 举报

14

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 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;        
}
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 06:30 , Processed in 0.148487 second(s), 64 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表