首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中获取CFFI函数的`const`修饰符?

如何在Python中获取CFFI函数的`const`修饰符?
EN

Stack Overflow用户
提问于 2018-07-04 03:40:41
回答 1查看 129关注 0票数 1

我正在为生成的C代码编写一个Python包装器,其中包含使用指针参数作为输出的函数。我想内省那些使用CFFI生成的函数,以确定它们是否输入了我们的输出参数。输入参数被标记为const,但是CFFI似乎丢弃了这个信息。

考虑下面的例子

from cffi import FFI
ffibuilder = FFI()

ffibuilder.set_source("_example",
   r"""
        int add(const int a, const int b) {
            return a+b;
        }
    """)

ffibuilder.cdef("""
        int add(const int a, const int b);
""")

if __name__ == "__main__":
    ffibuilder.compile(verbose=True)
    import _example
    ff = _example.lib.add
    ff_t = _example.ffi.typeof(ff)
    print(ff_t)

它打印<ctype 'int(*)(int, int)'>,而输入在代码中定义为const

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 03:54:58

抱歉,不可能。在将解析的代码转换为CFFI的内部ctype时,此信息已被丢弃。

看看pycparser模块(它是CFFI内部使用的模块);它将C源代码转换为解析树。从那里你可以更直接地再次获得所有这些信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51161844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档