带有可选成员的Ctypes结构

时间:2017-06-20 02:12:43

标签: python c-preprocessor ctypes

我有一个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个)文件。

有没有更好的方法来完成我所困扰的事情?

0 个答案:

没有答案