11 2006 档案
摘要:1 调用接口cp_lexer_get_preprocessor_token: // in cp/ parser.c,C++分析器 => c_lex_with_flags => 标记C++关键字c_lex_with_flags: // in c-lex.c,C语言词法分析 => cpp_get_token // in cpplib => 过滤掉CPP_PADDING类型的标记 => 对各类型做进一步精化处理,构造tree结构2 内存接口 C和C++共用一个cpp_reader *parse_in接口(在c-common.c中定义,cp/decl2.c中有对其的外部声
阅读全文
摘要:在gcc中,几乎所有的东西都是用树结构串起来的,从而形成抽象语法树。tree可以看作是指向树节点的指针,所有的树节点都有一个共同的基类:tree_common。在文件coretypes.h中,tree的定义如下:#ifndef USED_FOR_TARGET...typedef union tree_node *tree; ...#else...#define tree union _dont_use_tree_here_ *...#endif可见,当USED_FOR_TARGET宏未被定义的时候,tree是指向联合类型tree_node的指针类型;否则,tree是一个定义为union _do
阅读全文
摘要:1、在本国际标准中,程序文本被保存在称为源文件的单元内。一个源文件,加上通过预处理指令#include包含的头文件(17.4.1.2)和其他源文件(16.2),并除去被条件包含(16.1)预处理指令限定的代码行,称为翻译单元。[注:不需要对所有的C++程序单元同时进行翻译。]2、[注:翻译单元和实例单元的翻译结果可保存在一个独立的文件或是库文件中。程序中独立的翻译单元之间可通过(例如)调用标识符具有外部链接属性的函数、操作标识符具有外部链接属性的数据或操作数据文件进行通信。可对翻译单元逐个进行翻译,之后再将它们链接以生成可执行程序(3.5)。]2.1 翻译步骤1、下列步骤说明了翻译的先后次序。
阅读全文
浙公网安备 33010602011771号