C++ 定义变量类型

C++ 定义变量类型,c++,printing,types,macros,c-preprocessor,C++,Printing,Types,Macros,C Preprocessor,我试图将一个工作定义转换为一个正确的函数,但我不确定变量类型 我的工作方法是: #define WARN(x) std::cout << "WARNING! " << x << "!" << std::endl; 定义警告(x)std::cout 但我不确定变量类型 这就是使用函数模板可以提供干净解决方案的地方 template <typename T> void WARN(T const& x) { std::c

我试图将一个工作定义转换为一个正确的函数,但我不确定变量类型

我的工作方法是:

#define WARN(x)     std::cout << "WARNING! " << x << "!" << std::endl;
定义警告(x)std::cout 但我不确定变量类型

这就是使用函数模板可以提供干净解决方案的地方

template <typename T>
void WARN(T const& x)
{
  std::cout << "WARNING! " << x << "!" << std::endl;
}
模板
无效警告(T常量和x)
{

std::不要将可变函数误认为可变模板,可变模板知道传递了多少个参数及其类型。我没有意识到它们是两个独立的东西。我会查看模板,谢谢!如果只是一个参数,可变部分也会变得多余。常规模板就足够了。谢谢你的建议,但l这适用于多个变量?例如,我可以传递:“这是一个字符串”@user7119460,是的,你可以有多个参数的函数模板。
template <typename T>
void WARN(T const& x)
{
  std::cout << "WARNING! " << x << "!" << std::endl;
}
#define WARN(x)     std::cout << "WARNING! " << x << "!" << std::endl;