这段宏能不能用内联函数做?

fish_kun 2007-07-02 05:41:09
定义一个宏如下:
#define ISNULLPOINTTHENRETURN(X) if ( X == NULL ) { return FALSE; }

在一个BOOL test(void *)函数中用了这个宏:

BOOL test(void * pointer)
{
ISNULLPOINTTHENRETURN(pointer);
XXXX;
}
如果pointer为空,XXXX就不会执行,而是直接返回FALSE.这个宏能不能改成内联函数来实现呢?
...全文
306 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
longshanks 2007-07-05
  • 打赏
  • 举报
回复
一个函数inline展开后,return就不见了。因为对于inline函数,return是从该函数返回。一旦inline展开,函数本体就不存在了,也就无需那个return从这个函数返回了。
inline int f(int a) {
return a+1;
}
int x=10;
int y=f(x);
inline展开后,最后的那个调用可能会变成这副样子(伪码,具体的情况取决于编译器):
int y=x+1;
Mephisto_76 2007-07-04
  • 打赏
  • 举报
回复
inline bool is_null_point_then_return(void *x)
{
if( x== 0 )
throw runtime_error( "null pointer" );

return true
}

在外边用try{}catch{}.

楼主的做法比较变态,对程序毫无用处,我这边也是以无聊来做。

哈哈,笑谈。
gongyiling 2007-07-04
  • 打赏
  • 举报
回复
inline ISNULLPOINTTHENRETURN(void *x)
{
if ( x == NULL )
{
exit(FALSE);
}
}
这个可以吧,直接出去了.
yc_8301 2007-07-04
  • 打赏
  • 举报
回复
一楼的方式不可以吗??
lovecreak 2007-07-04
  • 打赏
  • 举报
回复
不能 这个宏里的return 是宏位置所在的函数的返回 并不是得出一个结果
taodm 2007-07-03
  • 打赏
  • 举报
回复
不用实现成inline。
这个宏也是很差的编程风格,也不应该用。
星羽 2007-07-03
  • 打赏
  • 举报
回复
不能了,要也是很诡异的函数级跳转@_@
Wolf0403 2007-07-03
  • 打赏
  • 举报
回复
不能用内联函数代替。同时原来这个宏对提高代码的可维护性没有任何好处。
chbtime 2007-07-02
  • 打赏
  • 举报
回复
对,这个是不能内联的。
agaric 2007-07-02
  • 打赏
  • 举报
回复
... 很明显,是不能做内联函数的。。 它本身的意思不是一个独立的函数,而是直接控制了所在函数的流程。。
meicaikourou 2007-07-02
  • 打赏
  • 举报
回复
inline BOOL ISNULLPOINTTHENRETURN(void *x)
{
return (x != NULL);
}
linfengc 2007-07-02
  • 打赏
  • 举报
回复
inline BOOL ISNULLPOINTTHENRETURN(void *x)
{
if ( x == NULL )
{
return FASLE;
}
}
return TRUE;去掉不就可以了?
lidongri 2007-07-02
  • 打赏
  • 举报
回复
不可以
按照LS的答案是错误的
只是返回了1个值(布尔值)但没有退出test
songzhenqiu 2007-07-02
  • 打赏
  • 举报
回复
inline BOOL ISNULLPOINTTHENRETURN(void *x)
{
if ( x == NULL )
{
return FASLE;
}
return TRUE;
}

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧