Я хотел бы интегрировать exprtk в приложение C ++ (с открытым исходным кодом). (Bool) или значение температуры (двойное), и я хотел бы иметь возможность оценить выражение, используя эти значения. < /P>
Я уже держу свою собственную таблицу переменных символов? Многие из них перечислены в режиме реального времени. && relay_1 == true "< /p>
мне нужно указать все имена переменных каждый раз, когда я запускаю parser.compile () < /strong>
или может Я посмотрел значения, а затем оцениваемые в Expression.value () время? < /P>
Что считается каноническим способом сделать это? Должен ли я создать функцию поиска и передать имя переменной в виде строки? т.е. "Lookup (" Oversy_temp ")> 60"? Я не уверен, что это мне что -нибудь купит, потому что неясно, могу ли я сериализовать контекст exprtk на потом? < /P>
Большое спасибо < /p>
Это работает, Но я бы предпочел не указывать все переменные каждый раз ..
Могу ли я сохранить контекст? < /p>
void test1() {
using T = double;
typedef exprtk::symbol_table symbol_table_t;
typedef exprtk::expression expression_t;
typedef exprtk::parser parser_t;
symbol_table_t immutable_symbol_table( symbol_table_t::symtab_mutability_type::e_immutable);
double outside_temp = -4;
immutable_symbol_table.add_variable("OUTSIDE_TEMP" , outside_temp );
expression_t expression;
expression.register_symbol_table(immutable_symbol_table);
parser_t parser;
if (!parser.compile("OUTSIDE_TEMP > 60.0", expression))
{
cout
Подробнее здесь: https://stackoverflow.com/questions/794 ... rnal-value