将CPP定义移植到python

porting CPP defines to python

本文关键字:python CPP 定义      更新时间:2023-10-16

我有一个程序(用C/C++编写),它的行为就像套接字服务器。我想用python编写客户端。通过TCP套接字交换的数据包遵循"自制"协议(简单),使用定义为#define的宏。。。在XXX.h文件中。我想解析XXX.h文件以生成等效的XXX.pyXXX.h文件仅包含CPP宏定义(和注释),例如:

//the following commands are used when talking to the server
//A tcp message is: the command(32bit word) followed by the flags (32 bits)
#define CMD_DO_SOMETHING1  1  //this does something
#define CMD_DO_SOMETHING2  2  //that does something else
 #define FLAG1   0x0001        //These flags are used as parameter in cmd2
 #define FLAG2   0x0002
 #define FLAG3   0x0004
 #define FLAG4   0x0008
 #define TEST_FLAG1(x) (x&FLAG1) //this tests for flag1

我想要一些类似的东西:XXX.py:

CMD_DO_SOMETHING1=1
CMD_DO_SOMETHING2=2
 FLAG1=1
 ...
 def test_flag1(x):
    return(x&flag1)

我曾短暂地看过swig,但不相信它真的符合我的要求。手动解析XXX.h文件并匹配正则表达式感觉是错误的。在*.py文件上运行CPP的想法也是如此。至少,常量定义应该被转换,这样我就不必重写它们两次。有更好的主意吗?

h2py.py正是这样做的。它包含在Tools/scripts 的Python发行版(*)中

如果您需要转换超过#defines,请参阅问题"将C++头文件转换为Python "

编辑:(*)它至少包含在完整的源发行版中。

为什么不使用宏预处理器来执行此操作?这就是他们的目的。