I
Immortal Nephi
I write custom assertion. The custom assertion is no longer to use
macros. The macros replacement is to use inline function.
Please comment which macros or inline function is better. I don’t
like to place __FILE__ and __LINE__ in inline function’s parameters.
#define DEBUG
#ifdef DEBUG
inline void cassert( bool expr, const char* file, int line, const
char* message )
{
if( !expr )
std::cout << file << "(" << line << ") : Assert failed - Expression:
" << message << std::endl;
}
#else
inline void cassert( bool expr, const char* file, int line, const
char* message ) {}
#endif
#ifdef DEBUG
#define assert( expr, message ) \
if( !expr ) \
std::cout << __FILE__ << "(" << __LINE__ << ") : Assert failed -
Expression: " << message << std::endl;
#else
#define assert( expr, message ) ( ( void ) 0 )
#endif
int main()
{
int a = 5;
cassert( 10 < a, __FILE__, __LINE__, "10 < 5" );
assert( 10 < a, "10 < 5" );
return 0;
}
macros. The macros replacement is to use inline function.
Please comment which macros or inline function is better. I don’t
like to place __FILE__ and __LINE__ in inline function’s parameters.
#define DEBUG
#ifdef DEBUG
inline void cassert( bool expr, const char* file, int line, const
char* message )
{
if( !expr )
std::cout << file << "(" << line << ") : Assert failed - Expression:
" << message << std::endl;
}
#else
inline void cassert( bool expr, const char* file, int line, const
char* message ) {}
#endif
#ifdef DEBUG
#define assert( expr, message ) \
if( !expr ) \
std::cout << __FILE__ << "(" << __LINE__ << ") : Assert failed -
Expression: " << message << std::endl;
#else
#define assert( expr, message ) ( ( void ) 0 )
#endif
int main()
{
int a = 5;
cassert( 10 < a, __FILE__, __LINE__, "10 < 5" );
assert( 10 < a, "10 < 5" );
return 0;
}