相关疑难解决方法(0)

C中的单个结构成员的sizeof

我试图声明一个依赖于另一个结构的结构.我想用来sizeof保证安全/迂腐.

typedef struct _parent
{
  float calc ;
  char text[255] ;
  int used ;
} parent_t ;
Run Code Online (Sandbox Code Playgroud)

现在我想声明一个child_t大小相同的结构parent_t.text.

我怎样才能做到这一点?(下面的伪代码.)

typedef struct _child
{
  char flag ;
  char text[sizeof(parent_t.text)] ;
  int used ;
} child_t ;
Run Code Online (Sandbox Code Playgroud)

我试着用几种不同的方法parent_tstruct _parent,但我的编译器不接受.

作为一个技巧,这似乎工作:

parent_t* dummy ;
typedef struct _child
{
  char flag ;
  char text[sizeof(dummy->text)] ;
  int used ;
} child_t ;
Run Code Online (Sandbox Code Playgroud)

是否可以在child_t不使用的情况下声明dummy

c struct sizeof

101
推荐指数
8
解决办法
5万
查看次数

C中的结构内存布局

我有一个C#背景.我非常喜欢像C这样的低级语言.

在C#中,struct默认情况下由编译器布局内存.编译器可以隐式地重新排序数据字段或填充字段之间的附加位.因此,我必须指定一些特殊属性来覆盖此行为以获得精确布局.

AFAIK,C struct默认情况下不重新排序或对齐a的内存布局.但是,我听说有一个很难找到的例外.

什么是C的内存布局行为?什么应该重新订购/对齐而不是?

c struct memory-layout

76
推荐指数
3
解决办法
9万
查看次数

标签 统计

c ×2

struct ×2

memory-layout ×1

sizeof ×1