让我们来考虑这个结构:
struct {
int a;
int _reserved_000_[2];
int b;
int _reserved_001_[12];
int c;
};
保留字段不应该被读取或写入。我的结构表示一个指向FPGA的描述符,其中有很多reserved
字段。我最终用随机命名来命名它们,因为经过多年后,最初的升序编号已经没有任何意义了。
所以现在我有:
struct {
int a;
int _reserved_3hjdds1_[2];
int b;
int _reserved_40iuljk_[12];
int c;
};
如果只有空字段,会更加方便:
struct {
int a;
int;
int b;
int;
int c;
};
但它不起作用。
有什么其他替代方案可以避免为预留
字段查找唯一名称?
reserved_## __COUNTER__
这样的吗? - nowox__COUNTER__
存在一个角落问题。如果struct
定义在一个*.h
头文件中,并且各个*.c
文件都包含它,那么__COUNTER__
状态可能会因为在*.h
包含之前如何使用__COUNTER__
而有所不同。通过单独编译具有不同字段名称的struct
是否能够正常工作或者会创建调试问题,我不确定。总之,这是一篇好文章。 - chux - Reinstate Monica