-2

我想知道是否可以使用字符串化编译器指令对整数变量进行字符串化。我尝试使用:

#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;
}

因此,在字符串化宏(#1)中添加另一个级别将使替换首先发生,然后将其放入代码(#2)中,以类似的方式可以在编译时将变量替换为值。我的意思是说如果 var = value; 那么有什么方法可以让 some_macro(var) --> 将其字符串化为“值”?

4

2 回答 2

4

不,预处理器作用于标记,它不知道变量及其值。如果值是从标准输入读取的,你想得到什么?

于 2011-05-15T07:53:46.077 回答
4

无法使用预处理器获取变量的值 - 预处理(顾名思义)发生在编译之前,并且该阶段不存在变量。

于 2011-05-15T07:54:19.060 回答