我有一个程序(用 C/C++ 编写)充当套接字服务器。我想用 python 编写客户端。通过 TCP 套接字交换的数据包遵循“自制”协议(protocol)(简单),使用在 XXX.h 文件中定义为 #define... 的宏。 我想解析 XXX.h 文件以生成等效的 XXX.py XXX.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
正是这样做的。它包含在工具/脚本中的 Python 发行版 (*)
如果你需要转换超过#defines,请看问题Convert C++ Header Files To Python
编辑:(*) 它至少包含在完整的源代码分发中。
关于c++ - 将 CPP 定义移植到 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410100/