我们知道C是一种编译语言。根据{{3}},它说:
它被设计为使用相对简单的编译器进行编译,以提供对内存的低级访问,提供有效映射到机器指令的语言结构,并且需要最少的运行时支持。它还说,通过设计,C提供了有效映射到典型机器指令的结构,因此它已经在以前用汇编语言编写的应用程序中得到了持久的使用,包括操作系统,以及用于计算机的各种应用程序软件。超级计算机到嵌入式系统。
但是当我读到C language Wikipedia&根据 C ++ 2中的思考Bruce Eckel ,它在第2章中标题为 Iostreams :(我省略了一些部分)
最大的障碍是运行时解释器用于 变量参数列表函数。这是解析的代码 您在运行时的格式字符串,并从中获取和解释参数 变量参数列表。这有四个原因。
因为解释在运行时发生,所以有一个性能 开销你无法摆脱。这令人沮丧,因为所有的 信息在编译时以格式字符串存在,但它是 直到运行时才评估。但是,如果你可以解析参数 在编译时格式字符串中你可以创建硬函数 可能比运行时快得多的调用 解释器(虽然printf()函数系列通常是 非常优化)。
this链接也说明了:
更多类型安全:有,I / O的对象类型是 由编译器静态知道。相比之下,cstdio使用“%” 字段以动态计算出类型。
因此,在阅读本文之前,我认为解释器不会像C一样在编译语言中使用,但是在执行C程序期间运行时解释器是否也可用?读这篇文章之前我错了吗?与Iostreams相比,这个运行时解释真的有这么多开销吗?
答案 0 :(得分:5)
什么?
这不是代码的运行时解释,只是在使用格式化字符串的函数内部。
当然,他们必须遍历格式字符串以了解参数和所需的格式,这需要时间。