[求助] 结构体的定义问题

青城山下   2016-11-18 12:37 楼主
我想在结构体中嵌入结构体,不知道这样是否可行?请大家帮我看看指导一下
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;

回复评论 (14)

2推荐 dontium 

嵌套可用,但象楼主位的方法不可取,每个结构体都单独定义会更好一些的。
点赞  2016-11-18 22:38
嵌套没问题,只要你别写出来语法错误就行。
点赞  2016-11-18 12:59
这样只要语法正确就没有问题
刻苦学习,共同进步
点赞  2016-11-18 14:13
说得对,只要语法不错误就行
点赞  2016-11-18 14:37
引用: 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;




这样写有问题吗?被老板骂了个狗血临头
点赞  2016-11-18 15:25
引用: huihuihaha 发表于 2016-11-18 14:37 说得对,只要语法不错误就行
多层嵌套是可行的,但是有没有层数的限制呢 本帖最后由 青城山下 于 2016-11-18 15:50 编辑
点赞  2016-11-18 15:26
引用: 迈尔风随 发表于 2016-11-18 14:13
这样只要语法正确就没有问题

被老板骂了个狗血淋头
点赞  2016-11-18 15:27
看来老板是搞技术的。他可能会有自己的一套风格。让手下也按他的方式去做。你的方法和他不符,他就不高兴了。他要有他的要求,就按他的来。
点赞  2016-11-18 21:26
引用: 青城山下 发表于 2016-11-18 07:27
被老板骂了个狗血淋头

理论上是可以的,但是这样嵌套会使得结构体变得复杂化,反而不符合模块化的方法了,通常是把每个结体定义单独分开比较直观
刻苦学习,共同进步
点赞  2016-11-19 09:11
引用: dontium 发表于 2016-11-18 22:38
嵌套可用,但象楼主位的方法不可取,每个结构体都单独定义会更好一些的。

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

谢谢指点,确实太冗杂了,模块化是重点
点赞  2016-11-19 12:36
引用: ienglgge 发表于 2016-11-18 21:26
看来老板是搞技术的。他可能会有自己的一套风格。让手下也按他的方式去做。你的方法和他不符,他就不高兴了 ...

嗯嗯,还是跟着老板的风格走
点赞  2016-11-19 12:37
估计老板就是骂他这样。单独先定义,然后总的结构体把分的都包含进去。 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; 本帖最后由 damiaa 于 2016-11-19 22:31 编辑
点赞  2016-11-19 22:30
引用: damiaa 发表于 2016-11-19 22:30
估计老板就是骂他这样。单独先定义,然后总的结构体把分的都包含进去。
struct   RegisterRequest ...

恩恩,是要这么做
点赞  2016-11-20 12:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复