考研 408 × 求职面试
知识点 · 编译原理 · 进阶
每日一题 · 编译原理
解析
面试小贴士 · 编译原理
代码实现 · C
#include <stdio.h>
#include <string.h>
// 概念模拟:同一份自举源码应产出同一编译器名
const char *compile(const char *self, const char *src) {
(void)self;
(void)src;
return "L-compiler";
}
int main(void) {
const char *seed = "seed";
const char *bootstrap_src = "compiler.c";
const char *stage1 = compile(seed, bootstrap_src); // 旧编译器编译新源码
const char *stage2 = compile(stage1, bootstrap_src); // 新编译器编译自身源码
puts(stage1);
puts(stage2);
if (strcmp(stage1, stage2) == 0)
puts("自举成功:两代产物一致");
else
puts("自举失败");
return 0;
}