URN Logo
UNIX Resources » Linux » China Linux Forum » Linux内核技术 » 19 » 请教两个C语言语法问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  TI专版
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
请教两个C语言语法问题
请教两个C语言语法问题 - yuanbor [2007-11-12 14:04 | 314 byte(s)]
 
Re: 请教两个C语言语法问题 - yist111 [2007-11-13 09:13 | 94 byte(s)]
 
Re: 请教两个C语言语法问题 - KernelNewbie [2007-11-12 20:44 | 93 byte(s)]
 
Re: 请教两个C语言语法问题 - yjx_super [2007-11-12 17:59 | 64 byte(s)]
 
Re: 请教两个C语言语法问题 - rockos [2007-11-12 18:10 | 66 byte(s)]
 
Re: 请教两个C语言语法问题 - scutanjun [2007-11-12 15:39 | 965 byte(s)]
 
Re: 请教两个C语言语法问题 - colorant [2007-11-13 08:49 | 89 byte(s)]
 
Re: 请教两个C语言语法问题 - jesuszhu [2007-11-12 14:14 | 86 byte(s)]
 
Subject: 请教两个C语言语法问题
Author: yuanbor    Posted: 2007-11-12 14:04    Length: 314 byte(s)
[Original] [Print] [Top]
问题一、
在struct task_struct结构的定义里有这么一句话:
unsigned did_exec:1;

问题二、
在struct iso_directory_record结构的定义里面有这么一句话:
char name[0];

请问这两种定义表示什么意思哪?能给出讲解这些知识的文章最好了。
谢谢大家。
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: jesuszhu    Posted: 2007-11-12 14:14    Length: 86 byte(s)
[Original] [Print] [Top]
第一个长度只有一个bit

第二个连一个bit也不占,就起个标识位置的作用。
----
愿我来世,得菩提时,身如琉璃,内外明澈,净无瑕秽。
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: scutanjun    Posted: 2007-11-12 15:39    Length: 965 byte(s)
[Original] [Print] [Top]
第一个问题概念上叫位段, 你在网上搜吧, 很多的. 我是在<C和指针>一书中接触到的.
第二个问题是零长度数组的问题.
GNU C允许声明零长度的数组来表示一个变长的结构体,
但是只有当这个零长度的数组是结构体的最后一个元素时才有意义. 比如下面的程序:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct zero
{
int size;
char str[0];
};

int main()
{
char *buf = "hello";

struct zero* msg = (struct zero*)malloc(sizeof(struct zero) + strlen(buf) +
1);
msg->size = strlen(buf);

strcpy(msg->str, buf);
printf("msg->str=%s ", msg->str);
return 0;
}
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: yjx_super    Posted: 2007-11-12 17:59    Length: 64 byte(s)
[Original] [Print] [Top]
第二个是GNU扩充,还有很多非常有用的扩充呢,可以看gcc的在线文档。
----
Out of your Window!
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: rockos    Posted: 2007-11-12 18:10    Length: 66 byte(s)
[Original] [Print] [Top]
0长度数组和可变长数组是C99标准, 不是GNU C扩展.

----
不喜欢GPL, BSD的免费许可不错.
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: KernelNewbie    Posted: 2007-11-12 20:44    Length: 93 byte(s)
[Original] [Print] [Top]
第二问题,精华区中有贴讲GNU C扩展的文章有提到,可以看看。

偶刚看的,嘿嘿。
----
用一生来做程序
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: colorant    Posted: 2007-11-13 08:49    Length: 89 byte(s)
[Original] [Print] [Top]
有意思,零长度数组最近看C语言核心技术的时候居然没看到。或者这只是变长数组的一种特殊用法?
----
[Original] [Print] [Top]
Subject: Re: 请教两个C语言语法问题
Author: yist111    Posted: 2007-11-13 09:13    Length: 94 byte(s)
[Original] [Print] [Top]
info gcc -> C Extensions -> Zero Length
gcc 文档是把它放在扩展里面的。
[Original] [Print] [Top]
« Previous thread
哪位用EMACS的大侠把支持内核编程风格的配置共享一下?
Linux内核技术
19
Next thread »
多核处理器上,怎样将软中断,内核线程绑定在指定的core上?
     

Copyright © 2007~2009 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
webmaster: webmaster@unixresources.net
This page created on 2009-09-07 16:26:33, cost 0.0201449394226 ms.