#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
详细的可以查查宏的用法