读书人

帮忙看下C语言中有关 define 的代码!

发布时间: 2012-03-26 15:46:56 作者: rapoo

帮忙看下C语言中有关 define 的代码!!!
#define strerror(num) ((num)==0 ? "No error" : \
((num)>=sys_nerr ? "Unknown error" : sys_errlist[num]))

以前没这样写过,知道这是定义一个函数 strerror(num),这样不需要定义返回的数据类型吗? 为什么从第 1 行到 n - 1 行最后一个是 "\"?

[解决办法]
这不是定义函数,这是定义宏, 会在编译预处理的时候被后面的替换掉, \ 是宏定义中换行连接的,代表这行写不完下一行继续
[解决办法]
宏定义,? 号表达式嵌套,

if (((num)==0 ) 返回 "No error";
else
{
if ((num)>=sys_nerr) 返回"Unknown error";
else 返回 sys_errlist[num];
}
[解决办法]

探讨

这不是定义函数,这是定义宏, 会在编译预处理的时候被后面的替换掉, \ 是宏定义中换行连接的,代表这行写不完下一行继续

[解决办法]
探讨
#define strerror(num) ((num)==0 ? "No error" : \
((num)>=sys_nerr ? "Unknown error" : sys_errlist[num]))

以前没这样写过,知道这是定义一个函数 strerror(num),这样不需要定义返回的数据类型吗? 为什么从第 1 行到 n - 1 行最后一个是 "\"?

读书人网 >C语言

热点推荐