使用关键字作为C函数参数或C ++模板参数

时间:2014-05-07 00:58:15

标签: c++ c

是否可以只使用普通的任意关键字作为C函数参数或C ++模板参数?

例如:

func(Random);

Class<Random>();

在此示例中,Random不是预定义的变量名,类型名称或宏值。

基本上,这些值将转换为字符串,但出于我的目的,我不想将其作为字符串传递。

这一切都可能吗?

1 个答案:

答案 0 :(得分:2)

如果需要,您可以定义一些宏

#define KW(x)  #x

然后你可以自由使用

void func(const char *p);
func(KW(oi));

void func(std::string s);
func(KW(ciao));

...另一种选择是将func定义为宏,例如:

#define func(a, x, b) realFunc(a, #x, b)

然后

void realFunc(int a, std::string s, double b);
func(3, arigato, 4.1);

...