【问题标题】:a macro substitution involving concatenation and line number [duplicate]涉及连接和行号的宏替换[重复]
【发布时间】:2016-09-24 13:33:35
【问题描述】:

我想要一个产生类似L17 的宏,其中17 是调用宏时的行号。但是以下仅产生L__LINE__

#define STOP L##__LINE__

想知道是否有办法让__LINE__ 在连接之前进行评估。

【问题讨论】:

标签: c++ c


【解决方案1】:

你需要一个双 concat 宏包装器:

#define CONCAT0(x,y) x ## y
#define CONCAT(x,y) CONCAT0(x,y)
#define STOP CONCAT(L,__LINE__)
int main() {
    int STOP = 42;
    L5 = 41;
}

【讨论】:

  • 谢谢,这行得通!
猜你喜欢
  • 2015-10-07
  • 2011-04-07
  • 2011-02-15
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多