Есть ли способ обернуть структуру, которая названа как ключевое слово (например, печать)? - PullRequest
2 голосов
/ 16 января 2012

У меня есть C исходный код и я хочу обернуть его в Cython. Теперь проблема в том, что существует структура с именем print, и ее извлечение приводит к синтаксической ошибке.

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

Та же проблема может возникнуть, когда атрибут, или функция, или подобное вызывается как ключевое слово.

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

Есть ли способ обойти это, без изменения источника ? Может быть, какой-нибудь метод, который заменяет имя прокси на реальное имя в исходном файле?

1 Ответ

2 голосов
/ 17 января 2012

Я думаю, что решение, которое вы ищете, выглядит примерно так:

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

print.var будет определяться как:

MY_print.MY_var

Таким образом, вы можете переименоватьструктуры, функции, объединения и перечисления из заголовочного файла.Имена преобразуются, когда Cython компилирует ваш код в код C

...