【发布时间】:2013-06-29 14:23:15
【问题描述】:
我想要一个宏,它可以将变量的类型与另一个标记合并以创建一个新标记。一个随机的例子:
int var;
int make_token(var);
这将变成:
int var;
int var_int;
我试图像这样定义宏:
#define make_token(x) x ## _ ## typeof(x)
但整个事情被扩展为:
int var;
int var_typeof(var)
有没有办法不用在宏的参数中传递变量的类型就可以做到这一点?
【问题讨论】:
-
我不这么认为。预处理器对语言本身几乎一无所知。
-
我相信你可以用双宏来做到这一点。
#define type_macro(x) typeof(x)#define make_token(x) x ## _ ## type_macro(x)。试试吧,但不要相信我的话,它有效。 -
我发现“令牌”一词令人困惑,并且更喜欢“标识符”。
-
@SergeyL。已经试过了,但结果是一样的。
标签: c gcc macros c-preprocessor typeof