如何檢索從宏展開的文本?打印由預處理器形成的變量標識符
#include <stdio.h>
#define paste(front, back) front ## back
int main()
{
int number1 = 23;
int number2 = 64;
printf("%d\n", paste(number, 2));
return 0;
}
的輸出是:因爲宏展開爲:
printf("%d\n", number2);
如何可以通過使用所定義的糊宏打印標識符NUMBER2作爲字符串。我需要知道如何創建輸出: 數字2:64通過不直接寫「號碼2」 我不希望這個解決方案:
printf("number2: %d\n", paste(number, 2))
我想要一個動態的解決方案。我嘗試做來連接:
printf("%s: %d\n", paste(number, 2), paste(number, 2));
但它不工作,因爲被貼宏返回數字2是一個標識符整數我如何可以檢索的文本(字符串)?
輸出是* paste(number,2):64 *問題是粘貼宏在使用前奏時未擴展字符串,但我不知道爲什麼。我正在使用gcc。我只是爲了學習的目的(在K&R書中解釋如何使用#來擴展宏參數作爲字符串)。 – Wronski
@Wronski我使用clang在本地進行了測試,並使用IDEOne和GCC([link](http://ideone.com/g9QVJQ))。這是保證工作的標準(這裏是一個[相關問題](http://stackoverflow.com/questions/2751870/how-exactly-does-the-double-stringize-trick-work))。 – 2013-09-01 18:22:21
@ H2CO3我猜Wronski正在這樣做,以查看宏是否以編程方式擴展。 –