Houdini 18.5 VEX

VEXでアサーション(診断チェック)を使用する方法

assert()マクロを使用することで、VEXコードのデバッグ中に情報をプリントすることができます。

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環境変数が設定されているかどうかをテストします。 その関数を使用することで、独自のアサートマクロを記述することができます(例えば、スタジオのログシステムを使ってマクロを記述することができます)。

VEX

言語

次のステップ

リファレンス