1.#define debug(...) printf( __VA_ARGS__)
2.#define debug(...) std::cout<< __VA_ARGS__
明らかに、1 は問題ありませんが、2 はコンパイル時にエラーが発生します。可変引数で「std::cout」を使用する可能性はありますか?
このマクロのポイントは何ですか?
「debug」マクロは、コードをデバッグするために何かを出力するために使用します。
void test(const classtype1 &obj1,const classtype2 &obj2)
{
// rewrite operator<<
debug(obj1,obj2);
//if use printf, I must call tostring method(or something likes that) to
//series the object to string.
debug(obj1.tostring(),obj2.tostring());
...
}