考虑以下几行:
int i;
printf("%d",i);
词法分析器会进入字符串将 %
和 d
解析为单独的标记,还是会将“%d”解析为一个标记?
最佳答案
这里有两个解析器:第一个是 C 编译器,它将解析 C 文件并基本上忽略字符串的内容(尽管现代 C 编译器也会解析字符串以帮助捕获错误格式的字符串——不匹配%
转换说明符和传递给要转换的 printf()
的相应参数之间。
下一个解析器是 C 运行时库中内置的字符串格式解析器。当您调用 printf
时,将在运行时调用它来解析格式字符串。相比之下,这个解析器当然非常简单。
我没有检查过,但我猜想帮助检查错误格式字符串的 C 编译器将实现一个类似于 printf
的解析器作为后处理步骤(即使用它自己的词法分析器) .
关于c - C 编译器如何解析以下 C 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25582530/