首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙看下C语言中有关 define 的代码!解决办法

2012-03-26 
帮忙看下C语言中有关 define 的代码!!!#define strerror(num) ((num)0 ? No error : \((num)sys_ner

帮忙看下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 行最后一个是 "\"?

热点排行