[英]How to fix “ 'Function' does not name a type ”? [Arduino]
我正在為我的一個Arduino項目制作一種腳本語言,並且需要python的eval函數。 所以我花了很多時間編碼一個代碼,我想我終於做到了,但是有一個問題,因為我遇到了“'evals'not named a type。”的錯誤,即使我早先定義了它,它也不起作用。在草圖中。
我嘗試更改有關該結構的所有內容,但沒有任何效果。 (例如,我嘗試為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”的變量,但它只會給出該錯誤。
您必須使用struct evals
而不是evals
作為類型,除非您指定以下內容:
typedef struct evals evals;
(這將evals
類型設置為等於struct evals
類型)
請參閱該問題的答案,以得到對為什么需要這樣做的一個很好的解釋(TL; DR是c的保留,如果您是該語言的新手,則沒有任何意義)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.