结构体定义顺序问题

G_Spider 2011-05-17 01:34:02
有如下的两个结构体,能否在不改变_A, _B的前后位置,使得对struct _B的引用正确。


typedef struct _A
{
char ch1;
struct _B b1;
char ch2;
}A;

typedef struct _B
{
char y;
}B;
...全文
688 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
G_Spider 2011-05-17
  • 打赏
  • 举报
回复
结帐,c不给力。
aozhi 2011-05-17
  • 打赏
  • 举报
回复
不可以。
因为在没有定义_B之前,编译器不知道_B有多大。
指针变量可以,是因为编译器知道指针变量的长度。
就想叫yoko 2011-05-17
  • 打赏
  • 举报
回复
+1[Quote=引用 2 楼 ljt3969636 的回复:]

不可以,除非是引用或者指针类型,并且加前向声明
C/C++ code

struct _B ;

typedef struct _A
{
char ch1;
struct _B* b1;
struct _B& b2;
char ch2; ……
[/Quote]
hu7324829 2011-05-17
  • 打赏
  • 举报
回复
都解释的很清楚了!
结构体中包含自己的对象时,这个结构体的声明还没结束呢!
但包含自己的指针对象是可以的
ljt3969636 2011-05-17
  • 打赏
  • 举报
回复
你像zhao4zhong1老哥那样也行,弄个没用的,同结构的结构体在前面充数~占位置~,保证后面有用的顺序不变~~
ljt3969636 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 g_spider 的回复:]

如果是这样的话,有没有什么工具可以方便调整_A, _B的先后位置。 结构体有点多。谢过。
[/Quote]
你基本只能手动调整了
赵4老师 2011-05-17
  • 打赏
  • 举报
回复
typedef struct _BB
{
char y;
}BB;

typedef struct _A
{
char ch1;
struct _BB b1;
char ch2;
}A;

typedef struct _B
{
char y;
}B;

G_Spider 2011-05-17
  • 打赏
  • 举报
回复
如果是这样的话,有没有什么工具可以方便调整_A, _B的先后位置。 结构体有点多。谢过。
ryfdizuo 2011-05-17
  • 打赏
  • 举报
回复
只有引用,指针可以使前向申明,
ljt3969636 2011-05-17
  • 打赏
  • 举报
回复
不可以,除非是引用或者指针类型,并且加前向声明

struct _B ;

typedef struct _A
{
char ch1;
struct _B* b1;
struct _B& b2;
char ch2;
}A;

typedef struct _B
{
char y;
}B;
千杯不醉-sen 2011-05-17
  • 打赏
  • 举报
回复
申明一下:
struct _B;

70,020

社区成员

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

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