VEXコードを記述/デバッグする際には、HOUDINI_VEX_ASSERT
環境変数を設定してからassert(condition)
マクロを使用することで、コード内のインバリアント(不変条件)をテストすることができます。
printfよりもassert()
を使用するメリットは、その環境変数が設定されていない時にその条件が実行されないので、最適化をする上ではアサーションの方が望ましいです。
コード内にアサートを残したまま、VEXコードのプロダクションパフォーマンスに影響を与えないようにすることができます。
assert()
マクロは、単にメッセージをコンソールにプリントするだけです。これは、プログラムの実行を停止しません。
assert()
マクロをインポートするには、ファイルの上部にassert.h
をインクルードしなければなりません:
assert.h
をインクルードしてから、assert
マクロを使って不変条件をテストします。
#include "assert.h" cvex test_assert(string texture_map="") { assert(1 == 2); assert(0 == 0); assert(texture_map != ""); }
HOUDINI_VEX_ASSERT
を設定して、アサーションを有効にします。
% export HOUDINI_VEX_ASSERT=1 % vexexec test_assert.vfl VEX Assertion Failed ./test_assert.vfl:6 - (1 == 2) VEX Assertion Failed ./test_assert.vfl:8 - (texture_map != "") % vexexec test_assert.vfl texture_map Mandril.rat VEX Assertion Failed ./test_assert.vfl:6 - (1 == 2)
assert_enabled関数は、HOUDINI_VEX_ASSERT
環境変数が設定されているかどうかをテストします。
その関数を使用することで、独自のアサートマクロを記述することができます(例えば、スタジオのログシステムを使ってマクロを記述することができます)。