int main(int argc, char **argv) { Tokenrow tr; time_t t; STATIC char ebuf[BUFSIZ]; #if defined(__GNO__) && defined(__STACK_CHECK__) atexit(printStack); #endif setbuf(stderr, ebuf); t = time(NULL); curtime = ctime(&t); maketokenrow(3, &tr); expandlex(); setup(argc, argv); fixlex(); iniths(); genline(); process(&tr); flushout(); fflush(stderr); exit(nerrs > 0); return 0; }
int main(int argc, char **argv) { Tokenrow tr; /* token row */ time_t t; /* 保存当前时间的整数值 */ char ebuf[BUFSIZ]; /* stderr buffer(stderr默认是没有buffer的,我们为其建立一个buffer) */ setbuf(stderr, ebuf); /* 设定标准错误的输出缓冲区为ebuf */ t = time(NULL); /* 获得当前时间的整数值 */ curtime = ctime(&t); /* 获得当前时间的字串值(例如: Sat Jul 4 12:27:13 2003)保存到全局变量curtime中 */ maketokenrow(3, &tr); /* 建立一个 token row(默认分配3个Token结构) */ expandlex(); /* 展开状态机 */ setup(argc, argv); /* 建立关键字hash表;处理命令行选项参数;将输入源文件压栈 */ fixlex(); /* 适时的关闭兼容C++单行注释兼容特性 */ iniths(); /* 初始化hideset,TODO: 啥是hideset? */ genline(); /* 产生一个行控制(line control)信息 */ process(&tr); /* 开始处理源程序 */ flushout(); /* flush output buffer to stdout */ fflush(stderr); /* flush stderr buffer */ exit(nerrs > 0); /* 退出进程 */ return 0; }
int main(int argc, char **argv) { Tokenrow tr; time_t t; char ebuf[BUFSIZ]; setbuf(stderr, ebuf); t = time(NULL); curtime = ctime(&t); maketokenrow(3, &tr); expandlex(); setup(argc, argv); fixlex(); iniths(); genline(); process(&tr); flushout(); fflush(stderr); exit(nerrs > 0); return 0; }