使用 C 预处理器宏(仅常量)作为 Python 变量
Use C preprocessor macros (just the constants) as Python variables
我正在编写一个 Python 代码,它需要与我也编写的 C 代码进行互操作。在 C 中,我有一个像
这样的部分
#define FOO 23 // whatever
#define BAR 54.3 // something else
我想在 python 中使用它们(因为常规变量很好)。我在我的网络搜索中没有找到任何东西,我可以轻松地自己编写一个解析器,但是......我不敢相信我是第一个有这种需求的人。 PyPreprocessor 接近,但不完全是。
有没有我缺少的明显方法?
也许这有点矫枉过正,但您可以使用 dissect.cstruct 模块中的解析器。
它目前支持简单的预处理器定义和像 #define TWO (ONE+1)
这样的简单表达式,但是
不支持 #if
和 #ifdef
.
等条件
代码示例
from dissect.cstruct import cstruct
defs_str = """
#define FOO 23 // whatever
#define BAR 54.3 // something else
"""
c = cstruct()
c.load(defs_str)
print(c.consts) # => {'FOO': 23, 'BAR': 54.3}
print(c.FOO) # => 23
print(c.BAR) # => 54.3
我正在编写一个 Python 代码,它需要与我也编写的 C 代码进行互操作。在 C 中,我有一个像
这样的部分#define FOO 23 // whatever
#define BAR 54.3 // something else
我想在 python 中使用它们(因为常规变量很好)。我在我的网络搜索中没有找到任何东西,我可以轻松地自己编写一个解析器,但是......我不敢相信我是第一个有这种需求的人。 PyPreprocessor 接近,但不完全是。
有没有我缺少的明显方法?
也许这有点矫枉过正,但您可以使用 dissect.cstruct 模块中的解析器。
它目前支持简单的预处理器定义和像 #define TWO (ONE+1)
这样的简单表达式,但是
不支持 #if
和 #ifdef
.
代码示例
from dissect.cstruct import cstruct
defs_str = """
#define FOO 23 // whatever
#define BAR 54.3 // something else
"""
c = cstruct()
c.load(defs_str)
print(c.consts) # => {'FOO': 23, 'BAR': 54.3}
print(c.FOO) # => 23
print(c.BAR) # => 54.3