タイトル | : assert(BLKSIZE-224-MDCTDELAY % 8 == 0)が失敗する |
投稿日 | : 2002/03/13(Wed) 22:39 |
投稿者 | : 計 |
> petit310のget_audio.cの111行目のASSERTが失敗するんですけど
> どうしてですか。
すいません,私のミスです.括弧が抜けてました.
間違:assert(BLKSIZE-224-MDCTDELAY % 8 == 0);
正解:assert((BLKSIZE-224-MDCTDELAY) % 8 == 0);
> #マクロだけだから、Assert(0==0)が失敗するということだよね
> #そもそもどうしてこういうアサートがあるのでしょうか
アセンブラコードではいろんな仮定を利用して最適化しています.例えば,特定
の定数が特定の範囲にしかならないことなど.
この場合,
(BLKSIZE-224-MDCTDELAY) % 8 == 0
が成り立つことをアセンブラコードの最適化に使っているので,他の部分の都合
で上記条件を満たさなくなった場合にアセンブラコードの変更が必要になります.
それをチェックするために assert を入れています.
といっても,今回のように assert の条件を間違っていたら無意味なんですけど
ね.お恥ずかしい.