【问题标题】:How to token paste a number? [duplicate]如何标记粘贴数字? [复制]
【发布时间】:2015-08-24 03:34:25
【问题描述】:

我必须动态创建对象。因此,我有以下几点:

#define timerID(num) timerID_##num

这导致timerID_num 而不是timerID_1。 有人可以告诉我该怎么做吗?

【问题讨论】:

  • 去掉分号和##
  • ; 感到抱歉,但删除## 我不明白你的意思?
  • 请重新考虑您的规范......如果有的话,您需要“动态创建变量”的情况很少。可能有更好的方法来解决您需要这些“动态变量”的实际问题。
  • @Lundin 我已经编辑了我的问题。实际上我需要创建对象而不是变量。而且我需要创建我已经创建的对象的动态变量,当我动态创建对象时需要使用这些变量。

标签: c++ macros token c-preprocessor


【解决方案1】:

检查以下代码sn-p:

#define f(g,g2) g##g2

void main()
{
   int timerID_1 = 12;
   printf("%d",f(timerID_,1)); 
}

这将连接到timerID_1。我打印了这个值只是为了调试。

【讨论】:

  • 这显然可行。我需要像这样通过f(timerID_,num);
  • @XavierGeoffrey :这是不可能的,因为 C 是一种静态语言,您无法在运行时决定符号名称。请参考此链接回答您的问题:stackoverflow.com/questions/5018059/…
  • 谢谢。我将使用数组来达到我的目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多