谁能给我讲讲C标记结构体初始化语法(tagged structure initialiazation)或提供相应资料?

nalfs 2005-09-24 02:05:29

struct file_operations fops={
.llseek = scull_llseek,
.read = scull_read,
};
有的这样写:
struct file_operations fops={
llseek:scull_llseek,
.read: scull_read,
};
具体语法规则到底如何?我在网上没有找到相应的说明,请高手指点。
...全文
166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
newbiestar 2005-09-25
  • 打赏
  • 举报
回复
第二种写法是gcc的扩展,而不是ANSI/ISO C的特性。

ISO C99里面使用的是第一种写法,称为designated initializers

在C99没有正式发布的时候,为了更加简单的初始化struct里面的成员,gcc提供了第二种方法对struct的初始化进行了扩展,这样可以更加方便的初始化成员。例如
struct A{int B; long C;}val = {C:2};//这样的话就可以跳过对B的显式初始化了。

而在C89及更早版本的C(主要是K&R C),需要写成struct A{int B; long C;}val = {0, 2};这样的话就要多打几个字母……
nalfs 2005-09-24
  • 打赏
  • 举报
回复
我是看到这样的代码,不懂,以前没有看到过这种写法,想搞清楚这种语法结构。希望各位能给我详细地说明。
foochow 2005-09-24
  • 打赏
  • 举报
回复
同意50米...
楼主也可以用构造函数:-)
fiftymetre 2005-09-24
  • 打赏
  • 举报
回复
struct MAN
{
char name[20];
int age;
int score;
};
MAN WeCan;
WeCan = {"WeCan",22,88};

最最大众化的写好,也是最好懂的。人们都喜欢。呵呵
Flood1984 2005-09-24
  • 打赏
  • 举报
回复
迷惑":"
jsjjms 2005-09-24
  • 打赏
  • 举报
回复
第二种写法,,,顶!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧