定义变量类型

时间:2017-01-30 03:06:34

标签: c++ printing types macros c-preprocessor

我试图将一个打印参数的工作定义转换为适当的函数,但我不确定变量类型。

我的工作方法是:

#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。我知道我可以使用可变参数函数,但我不必传递参数的数量,而是宁愿完全避免变量。

1 个答案:

答案 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;