#include "aliceml.h"マクロ定義 | |
| #define | ML_CHECKUPM(exp, result, message) |
| #define | ML_CHECKUPVM(exp, message) |
| #define | ML_CHECKUP(exp, result) ML_CHECKUPM((exp), (result), (#exp)) |
| プログラムのエラーチェックは 1) デバッグ時はなるべく早くエラーを検出 2) リリース時はなるべくエラーを出さずにプログラムを動かしたい と、デバッグ・リリース時で求められるものが微妙に変わってきます。 | |
| #define | ML_CHECKUPV(exp) ML_CHECKUPVM((exp), (#exp)) |
| #define ML_CHECKUP | ( | exp, | |||
| result | ) | ML_CHECKUPM((exp), (result), (#exp)) |
プログラムのエラーチェックは 1) デバッグ時はなるべく早くエラーを検出 2) リリース時はなるべくエラーを出さずにプログラムを動かしたい と、デバッグ・リリース時で求められるものが微妙に変わってきます。
そのためこのマクロでは、 デバッグ時は条件が偽ならすぐさまアサート、 リリース時には条件が偽でも関数からのリターンを行うのみ、 といった挙動をとります。
| exp | 真偽を判定するための条件です。これは1〜2回判定される 可能性があります。 | |
| result | 条件が偽の場合の戻り値です。 |
| #define ML_CHECKUPM | ( | exp, | |||
| result, | |||||
| message | ) |
値:
do { \ assert(exp); \ if (!(exp)) { \ ML_SetError("Failed '%s'.", (message)); \ return (result); \ } \ } while(!ML_TRUE_VAR)
| #define ML_CHECKUPV | ( | exp | ) | ML_CHECKUPVM((exp), (#exp)) |
| #define ML_CHECKUPVM | ( | exp, | |||
| message | ) |
値:
do { \ assert(exp); \ if (!(exp)) { \ ML_SetError("Failed '%s'.", (message)); \ return; \ } \ } while(!ML_TRUE_VAR)
1.5.5