C 如何检查声明是否为';外部';通用的?

C 如何检查声明是否为';外部';通用的?,c,gcc,compiler-construction,internals,C,Gcc,Compiler Construction,Internals,我正在玩GCC IR,我想检查声明是否是C源代码中的extern: extern int i; 我想在泛型树上这样做,得到类似这样的结果(类似于tree\u STATICmacro): 我已经检查了GCC内部,但没有找到所需的函数或宏。我不是GCC内部的专家,但也许您正在寻找的是DECL\u EXTERNAL?我想不出有什么好的理由说明变量是否在另一个对象文件中对您的代码很重要。当它运行时,它都在同一个进程中。请解释你为什么要这样做?没错!谢谢顺便问一下,你是怎么发现的?GCC内部的文档非常糟

我正在玩GCC IR,我想检查声明是否是C源代码中的
extern

extern int i;
我想在泛型树上这样做,得到类似这样的结果(类似于
tree\u STATIC
macro):


我已经检查了GCC内部,但没有找到所需的函数或宏。

我不是GCC内部的专家,但也许您正在寻找的是
DECL\u EXTERNAL

我想不出有什么好的理由说明变量是否在另一个对象文件中对您的代码很重要。当它运行时,它都在同一个进程中。请解释你为什么要这样做?没错!谢谢顺便问一下,你是怎么发现的?GCC内部的文档非常糟糕而且不可检索。我在C前端的源代码中搜索了“extern”,这就是我找到它的原因。然后我在
tree.h
中阅读了它的定义和相关注释,并意识到它很可能就是您所需要的。
tree t;
if (TREE_EXTERN (t))
   // do handling of extern