2012年2月3日金曜日

assert関数

 C/C++でassertという関数が用意されている。

自作のライブラリなんかで与えられた引数の範囲チェックをするif文を作ることがあると思う。
その場合に限らず、if文で範囲チェックしてもしその変数が希望通りの範囲ではないときエラーの出力を用意して、exit関数なんかで終わる方法がある。
#include<stdio.h>
#include<stdlib.h>

int main()
{
   int a = -1;
   if(a < 0){
      printf("エラー: aが不正な値です!\n");
      exit(1);
    }

   return 0;
}

他にも自作でusageという関数でエラーの出力文を予め作っておいて、printf文の代わりにusage();だけでエラー文を出力をさせる方法もある。

僕は以上のどちらのやり方もめんどくさいときはassert関数を使っている。
#include<assert.h>
int main()
{
   int a = -1;
   assert(a >= 0);

  return 0;
}
assert関数の引数である比較式が真であれば何も起こらないが、偽であった場合はエラーとなりプログラムが終了する。
||や&&ももちろん使える。
assert文を多用した場合、慣れるまではどこでエラーがあったのか分かりづらいことがあるから注意が必要。
前者のやり方とうまく使い分けをしましょう。

0 件のコメント :

コメントを投稿