社区
C++ 语言
帖子详情
这段宏能不能用内联函数做?
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
打赏
收藏
这段宏能不能用内联函数做?
定义一个宏如下: #define ISNULLPOINTTHENRETURN(X) if ( X == NULL ) { return FALSE; } 在一个BOOL test(void *)函数中用了这个宏: BOOL test(void * pointer) { ISNULLPOINTTHENRETURN(pointer); XXXX; } 如果pointer为空,XXXX就不会执行,而是直接返回FALSE.这个宏能不能改成内联函数来实现呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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;
}
c++基础知识点
title: c++基础知识点 date: 2018-07-16 15:07:29 updated: 2020-03-24 13:13:29 categories: c++ 1.局部变量初始化 当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。 2.宏与const对比 const 相比 #define 的优点: const 常量有数据类型,而 #define 没有,编译器可以对前者...
【iOS】—— 属性关键字及weak关键字底层原理
使用宏和常量所占用的内存差别不大,宏定义的是常量,常量都放在常量区,只会生成一份内存编译时刻:宏是预编译(编译之前处理),const是编译阶段。导致使用宏定义过多的话,随着工程越来越大,编译速度会越来越慢宏不
做
检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。
宏能
定义一些函数,方法。const
不能
。1.通过计算对象地址的哈希值, 来从SideTables中获取对应的SideTable. 哈希值重复的对象的引用计数存储在同一个SideTable里.2.SideTable使用。
C++基础入门——语法详解篇(下)
本篇文章对C++11的语法进行了详解,结合上篇文章(有链接),对C++中的引用、缺省参数、
内联函数
、auto进行了详细解释。有代码和实例总结,各种细节一一解释,帮助你很好的学习基础语法。
深度解析C/C++中的宏是什么?有什么作用呢?
一、C++中宏的作用 1、使用宏定义常量 示例:#define MAXSIZE 200 #include<stdio.h> #define M 20 int main() { int a = M; int b = 20; /* 编译后变成以下代码 int a = 20; int b = 20; */ print...
c语言中参数列表可变的函数写法,如printf
研究了一段时间反汇编,突然发现多年以前羡慕的printf样式的函数我也会写了如下面的这个函数(测试环境VS2008)DWORD Fun(int n,...) //n为参数书目,最多处理100个参数,并且每个参数要是一个4字节的变量,如DWORD/int/long/HANDLE{ DWORD para[100]; //最多处理100个参数,如果用动态内存方式可以处理参数数量不收限制 for(int i=0;i { __asm //从栈中的参数列表把参数复制到para数组里 {
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章