Top > C++ > apcl > debug > Assert

Assert Edit

概要 Edit

printfのメッセージがつけられるアサーション。
Releaseモードでもメッセージをはくアサートも用意。

履歴 Edit

  • revision 8 : 作成

コード Edit

ヘッダファイル Edit

fileAssert.hpp
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
!
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/** 
 * @file 
 * assertを記述する。
 */
#pragma once
 
//-----------------------------------------------------------
#include <cassert>
#include <cstdio>
 
//-----------------------------------------------------------
 
/**
 * Releaseモードでも機能するメッセージ付きアサート。
 * <pre>
 * ・Releaseモード時は表示はするがフリーズはしない。
 * ・メッセージはprintfの書式。
 * </pre>
 */
#define apclAssertRMsg( cmd , ... ) \
  if( !(cmd) ) \
  { \
    ::std::printf( "############################################################\n" ); \
    ::std::printf( "[APCL Assertion Failed]\nFile:%s\nLine:%d\n" , __FILE__ , __LINE__ ); \
    ::std::printf( #cmd ); \
    ::std::printf( "\n" ); \
    ::std::printf( "Message:" ); \
    ::std::printf( __VA_ARGS__ ); \
    ::std::printf( "\n" ); \
    ::std::printf( "############################################################\n" ); \
    assert( cmd ); \
  } \
 
/// Releaseモードでも機能するアサート。Releaseモード時は表示はするがフリーズはしない。
#define apclAssertR( cmd ) \
  apclAssertRMsg( cmd , "None" )
 
/// デバッグモード専用メッセージ付きアサート。メッセージはprintfの書式。
//@{
#ifdef _DEBUG
#define apclAssertMsg( cmd , ... ) \
  if( !(cmd) ) \
  { \
    ::std::printf( "############################################################\n" ); \
    ::std::printf( "[APCL Assertion Failed]\nFile:%s\nLine:%d\n" , __FILE__ , __LINE__ ); \
    ::std::printf( #cmd ); \
    ::std::printf( "\n" ); \
    ::std::printf( "Message:" ); \
    ::std::printf( __VA_ARGS__ ); \
    ::std::printf( "\n" ); \
    ::std::printf( "############################################################\n" ); \
    assert( cmd ); \
  } \
 
#else
#define apclAssertMsg( cmd , ... ) \  
  ((void)0)
 
#endif // _DEBUG
//@}
 
/// デバッグモード専用アサート。
//@{
#ifdef _DEBUG
#define apclAssert( cmd ) \
  apclAssertMsg( cmd , "None" )
 
#else // _DEBUG
#define apclAssert( cmd ) 
  ((void)0)
 
#endif // _DEBUG
//@}
 
 
//-----------------------------------------------------------
// EOF

ソースファイル Edit

fileAssert.cpp
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
 
 
 
 
 
 
 
 
/** 
 * @file 
 * Assert.hppの実装を記述する。
 */
#include <apcl/debug/Assert.hpp>
 
//-----------------------------------------------------------
// EOF

添付ファイル: fileAssert.cpp 596件 [詳細] fileAssert.hpp 769件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sat, 15 Jul 2006 18:18:26 JST (6488d)