ANDROID #deffuncの受け渡し変数を、その内の変数に一度落とす


2020年 6月 13日
 
 
 前のバグ修正の通り、#deffuncで変数を受け渡す時に、受け渡した変数をその #deffunc内で使うと、なぜか受け渡された変数の値も同時に変わってしまうという実機バグ(文字説明だと意味分からないな)

 test int nで nで変数を渡し

 #deffunc test int testnのように testnで受ける。
 
 
 そのソース内で

 #deffunc test int testn
  n=10

 のようにすると testnも 10に変わってしまう。

 PC等の通常起動では testnは nとは別扱いの変数なので変わったりしない。
 
 
 
 これを回避するための良い方法の一つは MZKさんのご指摘で

 #deffunc test int testn
  _testn=testn

 のようにして一度別の変数に落としてから、_testnをその内で使うようにする、というものでした。
 
 
 前の事件で #deffunの総数は 250個程と判明してるので、この方法でソースを改修するとえらい手間で、たぶん見落とし間違いも必ず発生すると思うので、逆転の発想を思いついた。

 #deffunc test int _testn
  testn=_testn

 こうすれば良いのだ。

 これなら始めに testn=_testmを書けば、ソースはそのままで済む。
 
 
 #deffuncの全部で変数の受け渡しをしている訳では無いので、修正は半分くらいだった。

 3時間程かかったが、うまく行ったようだ。
 
 

コメントを残す

メールアドレスが公開されることはありません。