【问题标题】:How do GCC process macros when one reference the other当一个引用另一个宏时,GCC如何处理宏
【发布时间】:2022-09-24 19:24:53
【问题描述】:
//foo.h

#define X TEST-9

#define TEST 10

//foo.c
#include<stdio.h>
#include\"foo.h\"

int main(void)
{
  int a = X;
  printf(\"%d\\n\", a);
}

当我跑步时:

gcc -o foo foo.c -Wall -Wextra

运行时没有输出:

./foo

结果是:1

我的问题是:

X引用了TEST,但是TEST是在X之后定义的,为什么X可以正确展开

    标签: macros c-preprocessor


    【解决方案1】:

    发生扩张使用时.当X用来int a = X 行,#define TEST 可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多