printfのメッセージがつけられるアサーション。 Releaseモードでもメッセージをはくアサートも用意。
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
1 2 3 4 5 6 7 8
/** * @file * Assert.hppの実装を記述する。 */ #include <apcl/debug/Assert.hpp> //----------------------------------------------------------- // EOF