getter関数のvolatile宣言
AVRの割り込みでクラス内変数を書き替える場合,その変数にgetterでアクセスして値の変更を待つ次のような文がうまく動かなかった.
while(!hoge.getval());
変数自体にvolatile宣言しても変わりがない.どうやら関数自体にvolatile宣言が必要らしい.
int class::getval(void) volatile { }
のように宣言すると一応動いた.しかし想定通りの動きとは少し異なってしまい,結局
volatile int temp; do{ temp=hoge.getval(); }while(!temp);
と書いたらうまくいった.とはいえただのポーリングに4行も書くのは何かばからしい.何とかならないものか.