免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3329 | 回复: 19
打印 上一主题 下一主题

请问下这是什么语法? [复制链接]

论坛徽章:
1
寅虎
日期:2014-11-30 21:25:54
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-27 09:04 |只看该作者 |倒序浏览
请问下这是什么语法?昨浏览内核代码看到的 c89可以编译通过

#include <stdio.h>                                                                                   
enum generic_types {                                                                                 
&nbsp;&nbsp;&nbsp;&nbsp;GT_DIR,                                                                                          
&nbsp;&nbsp;&nbsp;&nbsp;GT_PIPE,                                                                                         
&nbsp;&nbsp;&nbsp;&nbsp;GT_SOCK                                                                                          
};                                                                                                   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
typedef enum {                                                                                       
&nbsp;&nbsp;&nbsp;&nbsp;S_IFDIR,                                                                                         
&nbsp;&nbsp;&nbsp;&nbsp;S_IFIFO,                                                                                         
&nbsp;&nbsp;&nbsp;&nbsp;S_IFSOCK                                                                                         
}mode_t;                                                                                             
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
struct generic_type {                                                                                
&nbsp;&nbsp;&nbsp;&nbsp;const char *type;                                                                                
&nbsp;&nbsp;&nbsp;&nbsp;mode_t mode;                                                                                    
};                                                                                                   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
static struct generic_type generic_type_table[] = {                                                  
&nbsp;&nbsp;&nbsp;&nbsp;[GT_DIR] = {                                                                                    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.type = "dir",                                                                              
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.mode = S_IFDIR                                                                              
&nbsp;&nbsp;&nbsp;&nbsp;},                                                                                               
&nbsp;&nbsp;&nbsp;&nbsp;[GT_PIPE] = {                                                                                    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.type = "pipe",                                                                              
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.mode = S_IFIFO                                                                              
&nbsp;&nbsp;&nbsp;&nbsp;},                                                                                               
&nbsp;&nbsp;&nbsp;&nbsp;[GT_SOCK] = {                                                                                    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.type = "sock",                                                                              
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.mode = S_IFSOCK                                                                             
&nbsp;&nbsp;&nbsp;&nbsp;}                                                                                                
};                                                                                                   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int main()                                                                                          
{                                                                                                   
&nbsp;&nbsp;&nbsp;&nbsp;printf("hello world\n");                                                                        
}                                                

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2009-08-27 09:14 |只看该作者
c99里面支持的初始化结构体的语法。

论坛徽章:
1
寅虎
日期:2014-11-30 21:25:54
3 [报告]
发表于 2009-08-27 09:24 |只看该作者
[GT_DIR] = {                                                                                    
        .type = "dir",                                                                              
        .mode = S_IFDIR                                                                              
    },                              
我想知道的是 前面这个  [GT_DIR] 这是什么意思啊? 有什么用处

论坛徽章:
0
4 [报告]
发表于 2009-08-27 10:12 |只看该作者
原帖由 vbs100 于 2009-8-27 09:24 发表
[GT_DIR] = {                                                                                    
        .type = "dir",                                                                            ...

你不觉得就是数组下标吗

论坛徽章:
0
5 [报告]
发表于 2009-08-27 10:19 |只看该作者
原帖由 epegasus 于 2009-8-27 10:12 发表

你不觉得就是数组下标吗

看了一早上都看不懂,原来是数组下标

论坛徽章:
0
6 [报告]
发表于 2009-08-27 10:36 |只看该作者

论坛徽章:
1
寅虎
日期:2014-11-30 21:25:54
7 [报告]
发表于 2009-08-27 10:46 |只看该作者

回复 #4 epegasus 的帖子

我擦 想起来了 有看到过用枚举做数据下标的 这个用在初始化里的比较少见

论坛徽章:
0
8 [报告]
发表于 2009-08-27 10:52 |只看该作者
这种用法还是少见的,那些写内核源码的真实顶尖高手

论坛徽章:
0
9 [报告]
发表于 2009-08-27 15:45 |只看该作者
长见识了。

论坛徽章:
0
10 [报告]
发表于 2009-08-27 16:37 |只看该作者
学习了~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP