Как я могу утверждать из кода Python C?

Я пишу класс Python на C и хочу поместить утверждения в свой код отладки. assert.h меня устраивает. Это помещается только в отладочные компиляции, поэтому нет никаких шансов, что сбой утверждения повлияет на пользователя кода Python *.

Я пытаюсь разделить свой «библиотечный» код (который должен быть отделен от кода, связанного с Python) поэтому я могу использовать его из другого кода C. Мои методы Python, таким образом, представляют собой тонкую оболочку моего кода на чистом C.

Итак, я не могу сделать это в коде моей «библиотеки»:

if (black == white)
{
    PyErr_SetString(PyExc_RuntimeError, "Remap failed");
}

, потому что это загрязняет мой код на чистом C Python. Это также намного уродливее, чем простой

assert(black != white);

. Я считаю, что компилятор Distutils всегда устанавливает NDEBUG , что означает, что я не могу использовать assert.h даже в отладочных сборках.

Mac OS и Linux.

Помогите!

* один аргумент, который я слышал против утверждения в коде C, вызванном из Python.

7
задан Joe 27 December 2010 в 20:24
поделиться