Похоже, что вы хотите интерпретировать некоторое выражение (например AA+BB
быть оценивало до 30, так как -or в среде where- AA
привязанные к 10 и BB
привязанных к 20), используя переменные ваша программа на C (или некоторые другие переменные или bindings).
Я не уверен, что это вообще возможно и разумно (каково поведение, которое вы ожидаете, если пользователь вводит abort()
?).
Возможно, вы могли бы встроить какой-либо существующий интерпретатор, например. Guile или Lua, в вашей программе. В противном случае рассмотрите некоторые выражения (вам нужно будет формализовать их синтаксис, например, в BNF, и определить их semantics) в некоторый abstract syntax tree (AST), а затем закодировать интерпретатор для оценки таких АСТ в некоторой среде.
Обратите внимание, что во время выполнения, для скомпилированной программы C, переменная C AA
(объявленная в исходном C код в int AA;
) больше не существует (известно во время компиляции только не во время выполнения)
Если вы находитесь в Linux, возможно, читайте около dlsym(3) (что может дать вам возможность найти адрес некоторой глобальной переменной или символа во время выполнения, учитывая его имя).
BTW, читать о call stacks & continuations & interpreted languages & eval
Пожалуйста, ваш вопрос ясно, что это совершенно неясно. –
с большим количеством ручного кодирования, сравнивая входные данные с строками, один за другим – sp2danny
Похоже, вы очень смущены тем, что происходит на вашем компьютере для скомпилированной программы на C. –