5423|5

5

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

msp430头文件structure.h中一些变量前面加点是什么意思啊? [复制链接]

const struct Element down = {

              .inputPxselRegister = (uint8_t *)&P1SEL,

              .inputPxsel2Register = (uint8_t *)&P1SEL2,

              .inputBits = BIT5,

              // maxResponse - threshold < 655

              .maxResponse = 366,

              .threshold = 135

};   

  .inputPxselRegister。。这些东西前面加点是什么意思啊?求解释

最新回复

顶一个,,很多帖子啊,,学习一下。。楼主辛苦了。。  详情 回复 发表于 2013-9-7 19:18
 
点赞 关注

回复
举报

2781

帖子

419

TA的资源

五彩晶圆(中级)

沙发
 
http://www.deyisupport.com/quest ... 74/16728.aspx#16728
 
个人签名
 

回复

4005

帖子

0

TA的资源

版主

板凳
 
等效于down.inputPxselRegister 吧,不太确定
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
这是C语言标准C99和C89的问题
手册中提到过这个问题,
IAR和CCS都支持。


在标准C中(C89)结构标准初始化是用{}来实始化,在C99的版本,采用了采用可读性更强的标记化实始化,这在LINUX内核和驱动很为常见。
这是ISO C99的用法

C Primer Plus第五版中相关章节:

已知一个结构,定义如下
struct book {
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
};

C99支持结构的指定初始化项目,其语法与数组的指定初始化项目近似。只是,结构的指定初始化项目使用点运算符和成员名(而不是方括号和索引值)来标识具体的元素。例如,只初始化book结构的成员value,可以这样做:
struct book surprise = {
      .value = 10.99
};
可以按照任意的顺序使用指定初始化项目:
struct book gift = {
       .value   = 25.99,
       .author = "James Broadfool",
       .title      = "Rue for the Toad"
};

正像数组一样,跟在一个指定初始化项目之后的常规初始化项目为跟在指定成员后的成员提供了初始值。另外,对特定成员的最后一次赋值是它实际获得的值。例如,考虑下列声明:

struct book gift = {
       .value   = 18.90,
       .author = "Philionna pestle",
       0.25                           //value=0.25
    };

这将把值0.25赋给成员value,因为它在结构声明中紧跟在author成员之后。新的值0.25代替了早先的赋值18.90。
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

5
 
标准C的标记化结构初始化语法
在标准C中(C89)结构标准初始化是用{}来实始化,在C99的版本,采用了采用可读性更强的标记化实始化,这在LINUX内核和驱动很为常见。
这是ISOC99的用法
CPrimer Plus第五版中相关章节:
已知一个结构,定义如下
struct book {
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
};
C99支持结构的指定初始化项目,其语法与数组的指定初始化项目近似。只是,结构的指定初始化项目使用点运算符和成员名(而不是方括号和索引值)来标识具体的元素。例如,只初始化book结构的成员value,可以这样做:
struct book surprise = {
      .value = 10.99
};
可以按照任意的顺序使用指定初始化项目:
struct book gift = {
       .value   = 25.99,
       .author = "James Broadfool",
       .title      = "Rue for the Toad"
};
正像数组一样,跟在一个指定初始化项目之后的常规初始化项目为跟在指定成员后的成员提供了初始值。另外,对特定成员的最后一次赋值是它实际获得的值。例如,考虑下列声明:
struct book gift = {
       .value   = 18.90,
       .author = "Philionna pestle",
       0.25                           //value=0.25
    };
这将把值0.25赋给成员value,因为它在结构声明中紧跟在author成员之后。新的值0.25代替了早先的赋值18.90。
有关designated initializer的进一步信息可以参考c99标准的6.7.8节Ininialization。
其中VC++ 6.0只支持C89初始化,GCC支持自己标记化或自己扩展初始化。这种初始化采用 .name = value.这样不需要按顺序排序,方便调整实义,在大结构最大程度防止错位的和调整定义带来不便。
struct name_str{
 int data;
 char name[120];
 int num;
};
/* 标记式初始化,注意顺序不同,并可缺省 */
struct name_str str ={
  .num = 100;
  .name = "hxy";
};
/*C89 初始化 */
struct name_str str2 =
{
 100,"Andrew Huang",-2
};
/* gcc 扩展初始化 */
struct name_str str3 =
{
  name:"bluedrum";
  data:-1
}
在Linux2.6内核中对结构体的定义形式发生了变化,不再支持原来的定义形式。
static struct file_operations test_ops = {
     .open = test_open,
     .read = test_read
     .write = test——write,
};
这个声明采用了标记化结构初始化语法。这种写法是值得采用的,因为它使驱动程序在结构的定义发生变化时更具有可移植性,并且使代码更加紧凑且易读。标记化的初始化方法允许对结构成员进行重新排列。在某些场合下,将频繁被访问的成员放在相同的硬件缓存行上,将大大提高性能
 
个人签名
 
 

回复

10

帖子

3

TA的资源

一粒金砂(中级)

6
 
顶一个,,很多帖子啊,,学习一下。。楼主辛苦了。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表