运行时解释器真的是C程序执行的一部分吗?

时间:2015-07-02 14:26:12

标签: c++ c iostream interpreter stdio

我们知道C是一种编译语言。根据{{​​3}},它说:

它被设计为使用相对简单的编译器进行编译,以提供对内存的低级访问,提供有效映射到机器指令的语言结构,并且需要最少的运行时支持。它还说,通过设计,C提供了有效映射到典型机器指令的结构,因此它已经在以前用汇编语言编写的应用程序中得到了持久的使用,包括操作系统,以及用于计算机的各种应用程序软件。超级计算机到嵌入式系统。

但是当我读到C language Wikipedia&根据 C ++ 2中的思考Bruce Eckel ,它在第2章中标题为 Iostreams :(我省略了一些部分)

  

最大的障碍是运行时解释器用于   变量参数列表函数。这是解析的代码   您在运行时的格式字符串,并从中获取和解释参数   变量参数列表。这有四个原因。

     

因为解释在运行时发生,所以有一个性能   开销你无法摆脱。这令人沮丧,因为所有的   信息在编译时以格式字符串存在,但它是   直到运行时才评估。但是,如果你可以解析参数   在编译时格式字符串中你可以创建硬函数   可能比运行时快得多的调用   解释器(虽然printf()函数系列通常是   非常优化)。

this链接也说明了:

  •   

    更多类型安全:有,I / O的对象类型是   由编译器静态知道。相比之下,cstdio使用“%”   字段以动态计算出类型。

因此,在阅读本文之前,我认为解释器不会像C一样在编译语言中使用,但是在执行C程序期间运行时解释器是否也可用?读这篇文章之前我错了吗?与Iostreams相比,这个运行时解释真的有这么多开销吗?

1 个答案:

答案 0 :(得分:5)

什么?

这不是代码的运行时解释,只是在使用格式化字符串的函数内部。

当然,他们必须遍历格式字符串以了解参数和所需的格式,这需要时间。