4366|14

406

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

结构体的定义问题 [复制链接]

 
我想在结构体中嵌入结构体,不知道这样是否可行?请大家帮我看看指导一下
typedef struct  Register
{
      struct   RegisterRequest   
        {
            short UnitLength;
            byte    UnitType;    //  0x01  is for  RegisterRequest
            short  LocalApplyPort;
           long double   LocalApplyID;
        }tRegisterRequest;
          
     struct   RegisterReply
        {
           short UnitLength;
            byte  UnitType;     //   0x02   is  for  RegisterReply
           byte   Return;       //  return 0  if  it  is  successful,    return other number  if  not  successful
        }tRegisterReply;
         
}tRegister;

最新回复

本帖最后由 damiaa 于 2016-11-19 22:31 编辑 估计老板就是骂他这样。单独先定义,然后总的结构体把分的都包含进去。 struct   RegisterRequest    {             short UnitLength;             byte    UnitType;    //  0x01  is for  RegisterRequest             short  LocalApplyPort;            long double   LocalApplyID; }tRegisterRequest; struct   RegisterReply {            short UnitLength;             byte  UnitType;     //   0x02   is  for  RegisterReply            byte   Return;       //  return 0  if  it  is  successful,    return other number  if  not  successful }tRegisterReply; typedef struct  Register {            tRegisterRequest  request;               tRegisterReply  reply;       }tRegister;   详情 回复 发表于 2016-11-19 22:30
点赞 关注

回复
举报

1万

帖子

25

TA的资源

裸片初长成(高级)

推荐
 
嵌套可用,但象楼主位的方法不可取,每个结构体都单独定义会更好一些的。

点评

谢谢指点,分开了  详情 回复 发表于 2016-11-19 12:36
 
 

回复

6040

帖子

196

TA的资源

版主

板凳
 
嵌套没问题,只要你别写出来语法错误就行。

点评

typedef struct PlatFormFrame { tFrameType FrameType; }tPlatFormFrame; typedef struct { tRegister pRegister ; }tFrameType; typedef struct Regist  详情 回复 发表于 2016-11-18 15:25
 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

4
 
这样只要语法正确就没有问题

点评

被老板骂了个狗血淋头  详情 回复 发表于 2016-11-18 15:27
 
个人签名刻苦学习,共同进步
 
 

回复

190

帖子

1

TA的资源

一粒金砂(中级)

5
 
说得对,只要语法不错误就行

点评

多层嵌套是可行的,但是又没有层数的限制呢  详情 回复 发表于 2016-11-18 15:26
 
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

6
 
lcofjp 发表于 2016-11-18 12:59
嵌套没问题,只要你别写出来语法错误就行。

typedef struct   PlatFormFrame
{
     tFrameType  FrameType;

}tPlatFormFrame;

typedef struct        
{
        tRegister             pRegister ;   

}tFrameType;

typedef struct  Register
{
      struct   RegisterRequest   
        {
            short UnitLength;
            byte    UnitType;    //  0x01  is for  RegisterRequest
            short  LocalApplyPort;
           long double   LocalApplyID;
        }tRegisterRequest;
          
     struct   RegisterReply
        {
           short UnitLength;
            byte  UnitType;     //   0x02   is  for  RegisterReply
           byte   Return;       //  return 0  if  it  is  successful,    return other number  if  not  successful
        }tRegisterReply;
         
}tRegister;




这样写有问题吗?被老板骂了个狗血临头
 
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

7
 
本帖最后由 青城山下 于 2016-11-18 15:50 编辑
huihuihaha 发表于 2016-11-18 14:37
说得对,只要语法不错误就行

多层嵌套是可行的,但是有没有层数的限制呢
 
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

8
 
迈尔风随 发表于 2016-11-18 14:13
这样只要语法正确就没有问题

被老板骂了个狗血淋头

点评

理论上是可以的,但是这样嵌套会使得结构体变得复杂化,反而不符合模块化的方法了,通常是把每个结体定义单独分开比较直观  详情 回复 发表于 2016-11-19 09:11
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

9
 
看来老板是搞技术的。他可能会有自己的一套风格。让手下也按他的方式去做。你的方法和他不符,他就不高兴了。他要有他的要求,就按他的来。

点评

嗯嗯,还是跟着老板的风格走  详情 回复 发表于 2016-11-19 12:37
 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

10
 
青城山下 发表于 2016-11-18 07:27
被老板骂了个狗血淋头

理论上是可以的,但是这样嵌套会使得结构体变得复杂化,反而不符合模块化的方法了,通常是把每个结体定义单独分开比较直观

点评

谢谢指点,确实太冗杂了,模块化是重点  详情 回复 发表于 2016-11-19 12:36
 
个人签名刻苦学习,共同进步
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

11
 
dontium 发表于 2016-11-18 22:38
嵌套可用,但象楼主位的方法不可取,每个结构体都单独定义会更好一些的。

谢谢指点,分开了
 
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

12
 
迈尔风随 发表于 2016-11-19 09:11
理论上是可以的,但是这样嵌套会使得结构体变得复杂化,反而不符合模块化的方法了,通常是把每个结体定义 ...

谢谢指点,确实太冗杂了,模块化是重点
 
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

13
 
ienglgge 发表于 2016-11-18 21:26
看来老板是搞技术的。他可能会有自己的一套风格。让手下也按他的方式去做。你的方法和他不符,他就不高兴了 ...

嗯嗯,还是跟着老板的风格走
 
 
 

回复

6105

帖子

4

TA的资源

版主

14
 
本帖最后由 damiaa 于 2016-11-19 22:31 编辑

估计老板就是骂他这样。单独先定义,然后总的结构体把分的都包含进去。
struct   RegisterRequest   
{
            short UnitLength;
            byte    UnitType;    //  0x01  is for  RegisterRequest
            short  LocalApplyPort;
           long double   LocalApplyID;
}tRegisterRequest;
struct   RegisterReply
{
           short UnitLength;
            byte  UnitType;     //   0x02   is  for  RegisterReply
           byte   Return;       //  return 0  if  it  is  successful,    return other number  if  not  successful
}tRegisterReply;

typedef struct  Register
{
           tRegisterRequest  request;   
           tRegisterReply  reply;      
}tRegister;

点评

恩恩,是要这么做  详情 回复 发表于 2016-11-20 12:40
 
 
 

回复

406

帖子

1

TA的资源

一粒金砂(中级)

15
 
damiaa 发表于 2016-11-19 22:30
估计老板就是骂他这样。单独先定义,然后总的结构体把分的都包含进去。
struct   RegisterRequest ...

恩恩,是要这么做
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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