2015-06-09 99 views
1

我必須動態地創建對象。所以,我有以下幾點:如何令牌粘貼一個數字?

#define timerID(num) timerID_##num 

這導致爲timerID_num,而不是說timerID_1。 有人可以讓我知道如何做到這一點?

+1

刪除分號和## – Zelldon

+0

對不起';'但刪除##我不明白你的意思? –

+0

http://stackoverflow.com/q/10379691/812912 –

回答

1

檢查下面的代碼片段:

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

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

這將串聯到timerID_1。我打印這個值只是爲了調試。

+0

這顯然會起作用。我需要像這樣傳遞'f(timerID_,num);' –

+0

@XavierGeoffrey:這是不可能的,因爲C是一種靜態語言,您不能在運行時決定符號名稱。請參閱此鏈接哪個答案您的問題:http://stackoverflow.com/questions/5018059/passing-the-value-of-a-variable-to-macro-in-c –

+0

謝謝。我將使用數組來達到我的目的。 –