[リストへもどる]
一括表示
タイトルassert(BLKSIZE-224-MDCTDELAY % 8 == 0)が失敗する
記事No277
投稿日: 2002/03/13(Wed) 22:17
投稿者hacker
petit310のget_audio.cの111行目のASSERTが失敗するんですけど
どうしてですか。
#マクロだけだから、Assert(0==0)が失敗するということだよね
#そもそもどうしてこういうアサートがあるのでしょうか

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