1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
// define X to activate the xerr/xerr2 macros:
// xerr(insertion)
// inserts the '<<' concatenated elements into std::cerr
// preceded by the name of the source file, and ended by '\n'
// xerr2(insertion, code)
// performs the insertion if X is defined, and (unconditionally)
// executes the statement(s) in `code'. `code' must be valid
// C(++) code.
//
#ifdef XERR
#include <iostream>
#define xerr(insertion) std::cerr << __FILE__": " << insertion << '\n'
#define xerr2(insertion, b) \
{ std::cerr << __FILE__": " << insertion << '\n'; b; }
#else
#define xerr(insertion)
#define xerr2(insertion, b) b
#endif
|