免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1616 | 回复: 4

C语言问题,求教 [复制链接]

论坛徽章:
0
发表于 2012-02-23 11:01 |显示全部楼层
  1. struct attribute {
  2.         const char                *name;
  3.         mode_t                        mode;
  4. };
  5. struct mlog_attribute {
  6.         struct attribute attr;
  7.         u64 mask;
  8. };

  9. #define define_mask(_name) {                        \
  10.         .attr = {                                \
  11.                 .name = #_name,                        \
  12.                 .mode = S_IRUGO | S_IWUSR,        \
  13.         },                                        \
  14.         .mask = ML_##_name,                        \
  15. }

  16. static struct mlog_attribute mlog_attrs[MLOG_MAX_BITS] = {
  17.         define_mask(TCP),
  18.         define_mask(MSG),
  19.         define_mask(SOCKET),
  20.         define_mask(HEARTBEAT),
  21.         define_mask(HB_BIO),
  22.         define_mask(DLMFS),
  23.         define_mask(DLM),
  24.         define_mask(DLM_DOMAIN),
  25.         define_mask(DLM_THREAD),
  26.         define_mask(DLM_MASTER),
  27.         define_mask(DLM_RECOVERY),
  28.         define_mask(DLM_GLUE),
  29.         define_mask(VOTE),
  30.         define_mask(CONN),
  31.         define_mask(QUORUM),
  32.         define_mask(BASTS),
  33.         define_mask(CLUSTER),
  34.         define_mask(ERROR),
  35.         define_mask(NOTICE),
  36.         define_mask(KTHREAD),
  37. };

复制代码
小弟最近看linux-3.2.7内核中,Masklog.c中,这部分内容,意思呢我懂,就是在创建一个变量数组时候同时将其赋值,但是这种赋值我有点想不明白。。{:3_196:}

还请各位高手先知们解答,小弟拜上

论坛徽章:
0
发表于 2012-02-23 11:25 |显示全部楼层
static struct mlog_attribute mlog_attrs = {

.attr = {                                \

.name = TCP,                        \

.mode = S_IRUGO | S_IWUSR,        \

},                                        \

.mask = ML_TCP,
}

这样子是正确的?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2012-02-23 13:28 |显示全部楼层
回复 2# d19890104


    自己把那个文件做下预处理(例如用 gcc -E),看看结果你就清楚了。

论坛徽章:
0
发表于 2012-02-24 16:48 |显示全部楼层
我们通常在结构体中赋值的时候都是直接
struct AA{int a;int b;int c;};
stuct AA aa={1,2,3};
这个可以struct AA aa={.a=1;.b=2;.c=3};这样?
这个是C89标准还是C99标准?
回复 3# MMMIX


   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2012-02-24 17:14 |显示全部楼层
d19890104 发表于 2012-02-24 16:48
这个是C89标准还是C99标准?


C99.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP