Des*_*tor -5 c c++ interpreter iostream stdio
我们知道C是一种编译语言.根据C语言维基百科,它说:
它被设计为使用相对简单的编译器进行编译,以提供对内存的低级访问,提供有效映射到机器指令的语言结构,并且需要最少的运行时支持.它还说,通过设计,C提供了有效映射到典型机器指令的结构,因此它已经在以前用汇编语言编写的应用程序中得到了持久的使用,包括操作系统,以及用于计算机的各种应用软件.超级计算机到嵌入式系统.
但是当我读到这篇文章时,根据Bruce Eckel的C++ 2中的Thinking,它在第2章中标题为Iostreams :(我省略了一些部分)
最大的障碍是用于变量参数列表函数的运行时解释器.这是在运行时解析格式字符串并从变量参数列表中获取和解释参数的代码.出于四个原因,这是一个问题.
因为解释在运行时发生,所以你无法摆脱性能开销.令人沮丧的是因为编译时格式字符串中存在所有信息,但直到运行时才会对其进行求值.但是,如果您可以在编译时解析格式字符串中的参数,则可以进行硬函数调用,这些函数调用可能比运行时解释器快得多(尽管printf()函数系列通常已经过很好的优化).
这个链接还说:
更类型安全:有了I/O的对象类型,编译器静态地知道.相反,cstdio使用"%"字段动态地计算出类型.
所以在阅读本文之前,我认为解释器不像C那样用于编译语言,但是在C程序执行期间运行时解释器是否也可以使用?读这篇文章之前我错了吗?与Iostream相比,这种运行时解释真的有这么多开销吗?