【发布时间】:2016-05-07 09:08:11
【问题描述】:
在宏中,我想生成一个具有不同名称的变量,并尝试使用__LINE__ 作为区分它们的一种方式。简化示例:
#define UNIQUE_INT int prefix##__LINE__
UNIQUE_INT;
UNIQUE_INT;
但似乎__LINE__ 没有扩展,因为我在第二个中得到“int prefix__LINE__':redefinition”。
我想__LINE__ 不能在宏定义中使用,就好像它扩展了#definition 的行号而不是宏调用的行一样,但是让我问一下,以防万一有人有话要说。
【问题讨论】:
-
这看起来是个糟糕的主意。即使您确实设法创建了名称基于行号的变量,您打算稍后在代码中如何引用这些变量?
-
@squeamishossifrage 这不是一个糟糕的主意,总的来说,它可能非常有用。关键不是你会再次引用一个变量,而是你要确保它是被构造的,而不是在函数的其余部分中被引用,因为一些副作用或调试。对于像这样的int,我想它没用,但可能只是一个例子。
-
是的,示例过于简单化了。正如@chrisbeck 所说,有一个很好的答案。
标签: c++ macros c-preprocessor