Для достижения этого поведения вы должны использовать globals()
встроенный метод :
def var_of_var(k, v):
globals()[k] = v
print variable_name # NameError: name 'variable_name' is not defined
some_name = 'variable_name'
globals()[some_name] = 123
print variable_name # 123
some_name = 'variable_name2'
var_of_var(some_name, 456)
print variable_name2 # 456
Ага! Спасибо моему коллеге, мы обнаружили проблему.
В этом была проблема:
Было объявлено / прототип функции.
void FooBarIsBest(void);
Позже в файле была определена функция.
static void FooBarIsBest(void)
{
// do the best
}
Проблема здесь заключалась в том, что в прототипе ключевое слово static было опущено. Таким образом, это было похоже на определение целой новой функции.
Ссылка CALL16 используется gcc для перемещаемого кода. Код сборки файла показал, что CALL16 используется для этой функции ... Что неправильно, поскольку эта функция является локальной.
Интересно, что этот код использовался для компиляции & amp; link просто отлично с более старой версией gcc (3.2.2). Еще один ученый. :)
Попробуйте использовать флажок -mlong-calls для компилятора.