Comment detail
メソッドのフック (Nested Flatten)
その書き方ではCの言語仕様上では必ずbefore,func,afterの順に呼び出されることを保証できないのではないでしょうか。
評価が記述されている順番に行われることが保証されているのは条件演算子(?:),論理和演算子(||),論理積演算子(&&),カンマ演算子(,)のみだったと記憶しています。
(カンマ演算子以外は必ずしも全ての被演算子が評価されるとは限らないのでこのように列挙するのは微妙な気もしますが)
参考ページを貼り損ねてしまった・・・
see: 初級C言語Q&A
#6044(Cの関数フックもどき)について補足。
関数の戻り値を返せるようにするには、グローバル変数を使うのが簡単そうです。
または、afterで関数の戻り値を参照できたほうが便利なので、
( before(), after(func()) )
とするとよいかも。afterは引数をそのまま返します。
関数の戻り値を返せるようにするには、グローバル変数を使うのが簡単そうです。
または、afterで関数の戻り値を参照できたほうが便利なので、
( before(), after(func()) )
とするとよいかも。afterは引数をそのまま返します。





syat
#6044()
[
C
]
Rating0/0=0.00
define を関数定義の前にするとコンパイル通りません。
なんとか戻り値を取りたくて or にしました。
Rating0/0=0.00-0+
1 reply [ reply ]