Я пытаюсь использовать " all_true({1,1,0,1,1})".... кто-нибудь знает, я использую неправильный синтаксис или это просто невозможно?
Пример код приведен ниже, и я пробую 3 способа:
- "all_true(y)" => использование переменной вместо литерала, очевидно, работает (y равно double[5 ] и зарегистрировался через add_vector)
- "all_true({1,1,0,1,1})" => Вот над чем мне хотелось бы работать! ОШИБКА: ERR238 – Ожидается '}' вместо: ','
- "var v[5]:={1,1,0,1,1};all_true(v)" => работает как обходной путь, но не так аккуратно и интуитивно понятно, как хотелось бы конечным пользователям!
#include
int main(void) {
typedef exprtk::symbol_table symbol_table_t;
typedef exprtk::expression expression_t;
typedef exprtk::parser parser_t;
typedef exprtk::parser_error::type err_t;
double y[] = { 1, 1, 0, 1, 1 };
exprtk::rtl::vecops::package vecops_package;
symbol_table_t symbol_table;
symbol_table.add_vector("y",y);
symbol_table.add_package(vecops_package);
expression_t expression;
expression.register_symbol_table(symbol_table);
parser_t parser;
// all_true(y)
if (parser.compile("all_true(y)",expression)) {
printf("%.1f\n",expression.value());
}
else {
printf("Error: %s\n", parser.error().c_str());
}
// all_true({1,1,0,1,1})
if (parser.compile("all_true({1,1,0,1,1})",expression)) {
printf("%.1f\n",expression.value());
}
else {
printf("Error: %s\n", parser.error().c_str());
}
// var v[5]:={1,1,0,1,1};all_true(v)
if (parser.compile("var v[5]:={1,1,0,1,1};all_true(v)",expression)) {
printf("%.1f\n",expression.value());
}
else {
printf("Error: %s\n", parser.error().c_str());
}
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... expression
Мобильная версия