读书人

#define Z_CHECK_FUN(fun,val)是什么意

发布时间: 2012-03-11 18:15:38 作者: rapoo

#define Z_CHECK_FUN(fun,val)是什么意思?
在读代码,以下几句以前没用过,请高手赐教是何意?请说的详细点。多谢!这几段都放在一个头文件中。
段一:
#define Z_CHECK_FUN(fun,val)\
if((fun)!=0)\
{\
g_info("%s:%d:%s failed.",__FILE__,__LINE__,#fun);\
return val;\
}else{}
此处还有一个不明白的地方是这些“\”是什么意思,是必须的吗?

段二:
#define Z_SUCCEEDED(fun)((fun)>=0)

[解决办法]
\是必须的。在宏里,\连接下一语句,以实现分行。
Z_CHECK_FUN(fun,val)的意思是如果fun不是0,则调用g_info输出并返回val,
其中#把一个符号变成字符串,即在符号两边加"

Z_SUCCEEDED是判断fun是否大于等于0
[解决办法]
这些“\”是什么意思
-----
换行



[解决办法]
宏是用来替换相应它出现的地方

比如

#define max(x, y) x > y ? x : y

那么凡是代码里出现 max(x, y) 的地方都被替换成 x > y ? x : y

比如

void main()
{
int a = max(1, 2);
}

就是

void main()
{
int a = 1 > 2 ? 1 : 2;
}


至于 \

是用于一行写不完,在下一行连接


[解决办法]
这就是简单的一个检测打印当前函数信息的宏
#define 的东西你直接放到目标文件中进行替换
完了再看 和普通的语句一样
如果语法错误 预编译和编译时同样抱错
[解决办法]
第一个: \是续行符号,一行太长或者别的什么原因需要分多行时,在除最后一行外的其他行尾加上\,
逻辑上也更清晰,代码容易看一些;
这里的Z_CHECK_FUN,是判断fun是否等于0;若不等于0,则输出错误信息,将val作为返回值返回。

第二个: 这是判断 fun 是否大于等于 0

详细的可以查查宏的用法

读书人网 >C++

热点推荐