哪个编译阶段负责检测未申报的结构?

时间:2014-10-20 13:23:38

标签: c compiler-errors

例如,如果我有以下代码

int f()
{
 /*set struct value*/
 struct test_2 t;
 t.j = 0;
}

如果我收到struct test_2未声明的错误,我想知道编译的哪个阶段检测到此特定错误?另外我想知道哪个阶段编译会删除代码中的注释?我很抱歉,如果这是一个愚蠢的问题,我只是在研究编译器,并且很好奇。

据我所知,编译阶段包括以下内容

Lexical Analysis
Parsing
Semantic Analysis
Intermediate Code Generation
Code Optimization
Final Code Generation

1 个答案:

答案 0 :(得分:1)

这将取决于编译器,但最自然的拟合是评论的词法分析(因为它们被其余的进程忽略并且是正则表达式),并且语义分析用于检测某些东西没有已经宣布(因为Parsing不会保留符号表)。