Closed yumetodo closed 7 years ago
Pull Request チェックさせていただきました。 マージさせていただきますね。
ちなみに、これは assert に、TRUE、FALSE、0以外の引数が渡されていたのを修正されたということでよいのでしょうか?
@S-H-GAMELINKS いえ、違います。
DEBUG
マクロ定義時は単純にexpressionを評価(Releaseビルドでloadメンバ関数が呼ばれなかったのを治す)、未定義時はassertマクロのエイリアスとなるマクロ関数LINKS_EXPECT_TRUE
を追加となります。というより参考リンクに張ったmanの
If expression is false (i.e., compares equal to zero)
but in C99 it may have any scalar type.
より、assertマクロの判定は、(0 == (expression))
の時メッセージを出すものと読めます。
なるほど。そういう事でしたか。
いやぁ、ありがとうございます
assertマクロのexpressionはNDEBUG
マクロ定義時は評価されない(=実行されない)ので、評価されることで副作用を持つ(ex. 何かしらの変数の変更を伴う場合)式は書いてはいけないんですね。
他に似たような怖い話としては
なんかが有ります。
ほうほう。
早速、読んでみますね
assert macroのexpressionは副作用を持ってはいけない。
cause:
ref:
10