c++ - 预处理器 IDE 是唯一的功能吗?

标签 c++ c compilation ide preprocessor

我尝试进行研究,但无法找到预处理器的实际来源 - 它们是 IDE 的一部分(意味着每个 IDE 都有自己的实现)、独立程序还是编译器的一部分?

如果它们成为现代编译器的一部分,我想它在历史上并不是这样的。当时它是如何运作的?

谢谢

最佳答案

关于语言的最早工作在 1969 开始,几年后被命名为 “C”,基于语言 BCPL . 预处理器于 1972 年问世

当时 C 还在开发中,所以我们可以说 preprocessor 自 C 本身就存在了。从来没有没有预处理器的 C 编译器。。 C++ 在 C 之后出现,并且从一开始就有预处理器。

如果预处理器是一个独立的可执行文件而不是编译器,这无关紧要,但通常它是编译器的一部分。那时还没有 IDE。


Here's a link在那里你可以阅读更多。这是关于预处理器的部分:

1972-3 年左右发生了许多其他变化,但最重要的是引入了预处理器,部分是在 Alan Snyder [Snyder 74] 的敦促下,但还认识到 BCPL 和 PL/I 中可用的文件包含机制的实用性。它的原始版本非常简单,只提供包含文件和简单的字符串替换:无参数宏的#include 和#define。此后不久,主要由 Mike Lesk 和 John Reiser 对其进行了扩展,将宏与参数和条件编译结合起来。预处理器最初被认为是语言本身的可选附件。事实上,多年来,除非源程序在其开头包含特殊信号,否则它甚至不会被调用。这种态度一直存在,并解释了预处理器语法与语言其余部分的不完全集成以及早期引用手册中对其描述的不精确。

关于c++ - 预处理器 IDE 是唯一的功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50117458/

相关文章:

objective-c - 无法在 OSX 上从 64 位进程加载 32 位 dylib,反之亦然?

将 char 数组转换为 int 以停止程序

gcc - 我可以用动态符号表编译静态应用程序吗?

c - 如何在Ubuntu上编译ELSD?链接错误

c++ - Qt C++ 初始化类和从类调用带有变量的方法

c++ - Sprite 运动

c - 使用 mmap 使 int 数组对子进程可见

c++ - 链接器输入文件未使用,因为链接未完成

c++ - cout 打印 "-0"而不是 "0"

C++将指向的数组分配给数组