我有一个C结构,其内容可能因CPP定义而异。
typedef struct
{
int foo;
int bar;
#if (SOMETIMES_TRUE)
int optional;
#end
int baz;
#if (SEPARATELY_SOMETIMES_TRUE)
int more_options;
#end
int fuzz;
} my_fun_structure;
以前,CPP行评估为FALSE
,因此我无需考虑可选字段。我使用我的ctypes定义来解析二进制文件。一旦启用它们,我的二进制解析器输出就会产生垃圾。
我可以通过创建my_fun_structure
的两个ctype定义来解决这个问题,但它根本不可维护。特别是当结构的构件偏移非常流畅时。
我听说过动态生成c类型,但我认为它不适合我。这个代码库很大,定义混合了几个(~10个)文件夹中的几个(~40个)文件。
有没有更好的方法来完成我所困扰的事情?