Я пишу класс 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.