宏定义中的while(0) 起到分号的作用,避免编译器报错。
#define FUN_AFTER(con, fun) do {
std::string fun_name = #fun;
std::cout << " After " << fun_name << " :\n";
fun;
COUT(con);
} while(0)
FUN_AFTER(l1, l1.pop_front());