c++ - C 预处理器作为语言创建工具的长度/限制是什么?我在哪里可以了解更多关于这些的信息?

标签 c++ c c-preprocessor language-design

在他的FAQ , Bjarne Stroustrup 说:

To build [Cfront, the first C++ compiler], I first used C to write a "C with Classes"-to-C preprocessor. "C with Classes" was a C dialect that became the immediate ancestor to C++... I then wrote the first version of Cfront in "C with Classes".

当我读到这篇文章时,它激起了我对 C 预处理器的兴趣。我已经看到它的宏功能适合简化通用表达式,但没有想到它能够在我想象的将类引入 C 的水平上显着增加语法和语义。

所以现在我有一些问题:

  1. 是否还有其他示例可以说明这种从 C 引导语言的方法?

  2. 是否可以在任何地方找到 Stroustrup 原始作品的来源?

  3. 我在哪里可以了解更多关于使用此技术的细节?

  4. 该方法的长度/限制是什么?比如说,是否可以创建一组预处理器宏,让某人可以编写类似 Lisp/Scheme 的东西?

最佳答案

请注意,Stroustrup 不是说他使用 C 预处理器 (cpp) 来创建 C With Classes - 他没有。他使用 C 编写了自己的预处理器。而 Cfront 是一个真正的编译器,根本不是预处理器。 C 预处理器实际上非常不适合语言开发,因为它没有任何解析能力。

关于c++ - C 预处理器作为语言创建工具的长度/限制是什么?我在哪里可以了解更多关于这些的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784742/

相关文章:

c++ - If 语句没有正确读取 char 变量

c++ - 使用指向内部缓冲区的指针 move 语义

c - 函数的隐式声明

c - 从驱动程序写入事件日志

c - 如何将C程序代码转换成char[]?

objective-c - 复杂的预处理器宏

c++ - 什么时候可以在#include 指令中省略文件扩展名?

c++ - 如何为 VS2008 __forceinline 函数?

c++ - 阻止 alt+shift 事件或禁止以编程方式更改语言

c++ - 我应该使用什么库来从二维码照片中获取数据?