В стандарте C говорится, что переменная должна назначаться не более одного раза между двумя точками последовательности. Например, точка с запятой - это точка последовательности. Поэтому каждое утверждение вида:
i = i++;
i = i++ + ++i;
и т. Д. Нарушает это правило. В стандарте также говорится, что поведение не определено, а не неопределено. Некоторые компиляторы обнаруживают их и приводят к некоторому результату, но это не соответствует стандарту.
Однако две разные переменные могут быть увеличены между двумя точками последовательности.
while(*src++ = *dst++);
Вышеупомянутое общая практика кодирования при копировании / анализе строк.
Попробуйте добавить это в начале файла:
import inspect
import sys
if not hasattr(sys.modules[__name__], '__file__'):
__file__ = inspect.getfile(inspect.currentframe())
Не слишком уверен, как вы сделаете его совместимым с python, но gcc #define
s __FILE__
для имени файла, в котором находится код.