私は3つの関数を持っていますが、それぞれ次の関数を呼び出していくつかの値を渡します。不思議なことに、私が3番目の関数に複数の呼び出しを行う2番目の関数では、呼び出しの間で値の1つが変化します。そして、この変数は確実にローカルです。何か不足していますか?Arduino関数の変数値が関数呼び出しの間で変化する
void functionA(...){
//Something...
int i=1,j=1,k=2;
functionB(i,j,k);
}
void functionB(int i,int j,int k){
String X="";
Serial.print(i);//Gives 1
if(j==1)
X="hello world";
functionC(i,j,k,X);//Call 1 to functionC
Serial.print(i);//Gives 0 !!!!!!!!!!!!!!!!!!!!!!!!
if(j==2)
X="hello world2";
functionC(i,j,k,X);//Call 2 to functionC
}
void functionC(int i, int j, int k, String X){
if(i)
//Do something
else
//Do somethingelse
}
マイ実験
void functionC(int i, int j, int k, String X){
//Print i here. No difference with the result.
if(i)
//Do something
else
//Do somethingelse
//But if I Print i here again, then it is working. As in, "i" does not change anymore. between each call to functionC
}
あなたの例ではfunctionCを1回呼び出すことができます。 – Willwsharp
申し訳ありません。更新された質問/コード – aVC
2番目の呼び出しの後に 'i'をもう一度印刷してください – acornagl