我试图将一个打印参数的工作定义转换为适当的函数,但我不确定变量类型。
我的工作方法是:
#define WARN(x) std::cout << "WARNING! " << x << "!" << std::endl;
然后我可以传递一个类似于使用std :: cout
的句子WARN("This is a test warning." << " And this is some more stuff...");
但是,我认为这应该更整齐地包装到函数中而不是使用define。
请您帮助我理解预处理器如何解释变量x,以及如何将定义转换为函数。
P.S。我知道我可以使用可变参数函数,但我不必传递参数的数量,而是宁愿完全避免变量。
答案 0 :(得分:0)
但我不确定变量类型。
使用功能模板可以提供干净的解决方案。
template <typename T>
void WARN(T const& x)
{
std::cout << "WARNING! " << x << "!" << std::endl;
}
是
的一个很好的替代品#define WARN(x) std::cout << "WARNING! " << x << "!" << std::endl;