ACE_NEW_RETURN的意思
来源:互联网 发布:便利店免费收银软件 编辑:程序博客网 时间:2024/04/25 09:55
看到好多ACE程序都使用了ACE_NEW_RETURN,一直不知道干嘛用的,再加上前一段时间比较忙,没有对每条语句进行深究。
今天终于找到了ACE_NEW_RETURN的出处,有三个定义,都在OS_Memory.h中定义,可能是用于适应不同的平台而作的吧。下面的这个是最容易看懂的,用了try-catch语句。
# define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) /
do { try { POINTER = new CONSTRUCTOR; } /
catch (ACE_bad_alloc) { errno = ENOMEM; POINTER = 0; return RET_VAL; } /
} while (0)
do { try { POINTER = new CONSTRUCTOR; } /
catch (ACE_bad_alloc) { errno = ENOMEM; POINTER = 0; return RET_VAL; } /
} while (0)
ACE_NEW_RETURN的定义是:
ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL)
ACE_NEW_RETURN对应翻译是:
try
{
POINTER=new CONSTRUCTOR;
}
catch(ACE_bad_alloc)
{
errno=ENOMEM;
POINTER=0;
return RET_VAL;
}
意思就是用new动态生成一个参数2类型的空间,并将空间的首地址副给第一个参数。如果有错误产生则将第一个参数的值设为空,并返回值RET_VAL。不过不知道为什么Doung为什么喜欢在副值之前用do-while语句,莫非这样做有什么好处?
另两个定义是
# define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) /
do { POINTER = new (ACE_nothrow) CONSTRUCTOR; /
if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } /
} while (0)
和
do { POINTER = new (ACE_nothrow) CONSTRUCTOR; /
if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } /
} while (0)
和
# define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) /
do { POINTER = new CONSTRUCTOR; /
if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } /
} while (0)
do { POINTER = new CONSTRUCTOR; /
if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } /
} while (0)
- ACE_NEW_RETURN的意思
- ACE_NEW_RETURN的意思
- ACE_NEW_RETURN的意思
- ACE_NEW_RETURN的意思
- ACE_NEW_RETURN----ACE安全机制的使用
- 的意思
- 的意思
- <<、>>的意思
- 表面的意思和真正的意思
- Japanese的意思
- Family的意思
- 数字代表的意思
- const的意思
- BLOG 的意思
- '+'号的意思
- “负暄”的意思
- sealed关键字的意思
- 弱水三千,只取一瓢饮 的意思
- YARE开发记录(1)
- Secure Shell(SSH)简介
- 放松一天也累
- Using the XML HTTP Request object
- wxpython获取id的方法
- ACE_NEW_RETURN的意思
- 组件编程(1) 基础
- msdn介绍Fiddler PowerToy - Part 1: HTTP Debugging
- Progarming Perl ---Preface
- 组件编程(2) PropertyAttribute和EventAttribute
- 上海是一个繁华的大都市!~
- sql优化
- hehe,再测试一下~
- 锁定DBGrid左边的列