c++ - 将 CPP 定义移植到 python

标签 c++ python c

我有一个程序(用 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/

相关文章:

c++ - 如何使用 NVidia GPU 在 Windows 下逐步调试 OpenCL GPU 应用程序

python - Pymssql 安装错误

c - char[] + memcpy() 是否违反严格别名?

c - 数组指针(在同一行中声明和定义给出垃圾值,而在不同行中工作得很好)

c - 给定范围内数字的 while 循环和回文

c++ - 字符串输入复制文本

c++ - 如何为c++代码找到对应的程序集

python - 如何乘以 Pandas 数据框并保留行键

c++ - QObject::deleteLater 跨 QThread

python - 如何在 Python 中将对象的所有属性复制到另一个对象?