其他分享
首页 > 其他分享> > c – 将模板类型传递给宏

c – 将模板类型传递给宏

作者:互联网

参见英文答案 > pass method with template arguments to a macro                                    3个
我有一个宏,它接受一些参数,其中一个是一个类型.例如:

#define macro(T,x) T x

如果我尝试使用模板类型对其进行实例化,请说:

macro(Type<int,float>,var);

这不会按预期工作,因为预处理器不知道任何模板.它会将其解析为三个参数:

macro(
  Type<int,
  float>,
  var
);

See also full example.

有没有解决的办法?我使用了typedef Type< int,float>吨;但我想知道是否可以在不引入另一种(可能是全局的)类型的情况下进行内联.

也许逗号可以守卫?

解决方法:

您可以引入额外的宏:

#define COMMA ,

然后

macro(Type<int COMMA float>,var);

标签:comma,c,macros
来源: https://codeday.me/bug/20190828/1752005.html