タイトル | : assert(BLKSIZE-224-MDCTDELAY % 8 == 0)が失敗する |
記事No | : 278 |
投稿日 | : 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 の条件を間違っていたら無意味なんですけど ね.お恥ずかしい.
|