有没有办法包装一个像关键字一样命名的结构(例如打印)?

Posted

技术标签:

【中文标题】有没有办法包装一个像关键字一样命名的结构(例如打印)?【英文标题】:Is there a way to wrap a structure that is named like a keyword (eg. print)? 【发布时间】:2012-01-16 16:01:37 【问题描述】:

我有一些C 源代码,想将其包装在 Cython 中。现在的问题是,有一个名为print 的结构,并且将其外部化会引发语法错误。

cdef extern from "foo.h":
    struct print:
        # ...

当一个属性或一个函数或类似的东西像关键字一样被调用时,也会出现同样的问题。

cdef extern from "foo.h":
    struct foo:
        bint print
    print(char*, int)

有没有办法解决这个问题,不修改源代码?也许有一些技术可以用源文件中的实名替换代理名?

【问题讨论】:

【参考方案1】:

我认为您正在寻找的解决方案类似于:

cdef extern from "foo.h":
    struct print "MY_print":
        double var "MY_var"

print.var 将被定义为:

MY_print.MY_var

这样你可以重命名头文件中的结构、函数、联合和枚举。当 Cython 将您的代码编译成 C 代码时,名称会被转换。

可以在here找到Cython文档的相关部分。

【讨论】:

以上是关于有没有办法包装一个像关键字一样命名的结构(例如打印)?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在javascript中创建hashmap并像添加和删除值一样操作它

第13次作业

作业13

第十三次作业

像字符一样打印,但在 Shiny 和 DataTable 中像数字一样排序

实验13——结构体文件的基本应用