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時間程かかったが、うまく行ったようだ。