2011-05-15 31 views
-2

我想知道是否有一種方法可以使用字符串化編譯器指令字符串整數變量。 我嘗試使用:isoa替代存在使用編譯器指令宏

#define stringize(a) #a 
#define h(a) stringize(a) 
#define g(a,b) a##b 
#define f(a,b) g(a,b) 

int main() 
{ 
    int num = 1024; 
    printf("%s=%s\n",stringize(h(f(1,2))), h(f(1,2))); //1. h(f(1,2))=12 
    printf("%s=%s\n",h(h(f(1,2))), h(f(1,2)));   //2. "12"=12 
    printf("%s=%d\n", h(num),num);      //num=1024 
    return 0; 
} 

,以便在stringize宏添加另一級(#1)可以使取代發生第一然後將其放置在代碼(#2),在類似的方式可變量來在編譯替換與價值的時間。 我的意思是說如果var = value;那麼是否有某種方式可以將some_macro(var) - > 字符串化爲「value」?

回答

4

使用預處理器無法獲得變量的值 - 預處理(如其名稱所示)在編譯之前發生,並且該變量在該階段不存在。

4

否。預處理器正在處理令牌,它不知道變量及其值。如果從標準輸入讀取該值,您希望得到什麼?