Я создаю язык сценариев для одного из моих проектов Arduino, и мне нужна была функция eval из python.Так что я потратил целую вечность на кодирование одного и думаю, что наконец-то это сделал, но есть одна проблема, она не будет работать, так как я получаю сообщение об ошибке «evals» не называет тип », даже если я определил его ранеев эскизе.
Я попытался изменить все в структуре, и ничего не работает.(Например, я попытался переместить знаки * для переменных типа char, я попытался изменить интервал, убрав и добавив обратно «;» после структуры, добавив и удалив typedef до и т. д.)
struct evals {
char *pointer;
bool boolout;
char *charout;
int intout;
float floatout;
};
evals eval(String input) {
evals output;
String inputs = input;
char input2[inputs.length() + 1];
inputs.toCharArray(input2, inputs.length());
if (input[0] == '"' and input[-1] == '"') {
inputs.remove(0, 1);
inputs.remove(-1, 1);
output.pointer = "charout";
char input2[inputs.length() + 1];
inputs.toCharArray(input2, inputs.length());
output.charout = input2;
return output;
} else if (input == "true") {
output.pointer = "boolout";
output.boolout = true;
return output;
} else if (input == "false") {
output.pointer = "boolout";
output.boolout = false;
return output;
} else {
String inputss = inputs;
inputss.replace("0", "");
inputss.replace("1", "");
inputss.replace("2", "");
inputss.replace("3", "");
inputss.replace("4", "");
inputss.replace("5", "");
inputss.replace("6", "");
inputss.replace("7", "");
inputss.replace("8", "");
inputss.replace("9", "");
if (inputss.length() == 0) {
output.pointer = "intout";
output.intout = inputs.toInt();
return output;
} else {
if (inputss[0] == "." and inputss.length() == 0) {
output.pointer = "floatout";
output.floatout = inputs.toFloat();
return output;
} else {
for (int Variable = 0; Variable < 50; Variable++) {
if (LocalVariables[Variable] == "") {
break;
} else {
output.pointer = "variableout";
output.intout = Variable;
return output;
}
}
}
}
}
}
Я ожидаю, что он вернет переменную типа "evals", но это просто выдаст эту ошибку.