C预处理程序的起源是什么?
C预处理程序已附加到C,但是它的语法与主要语言完全不同: 语法上显着的空格(行尾终止一条语句,宏确定替换列表的开始后的间隔) 基于关键字的块而不是支撑块,elif而不是else if 关键字主导的定义,而不是声明反射的使用,=对于值定义,否 其他字符串语法的提示(#include <>vs #include "") 惰性求值(显然是C的;但是6.10.3.1可以理解为也暗示着宏扩展的特定顺序,在一些重要的地方) 真的看起来根本不像C!从技术上讲,它是它自己的语言,但是它一直被用作C的几乎不可或缺的部分,并且它在语法上不与它集成似乎很奇怪。 维基百科没有谈论它的历史。波特兰模式存储库给了它一个提及,但没有详细介绍它是由其他人(而不是C的其他人)设计的。具有C历史的Dennis Ritchie的网站可能有答案,但不幸的是没有不再可用。 宏引擎,它显然已经从运行系统语言,这可以解释非常不同的语义一些差异,但不是视觉设计方面(这也不清楚现代眼光是否本来是打算作为能够在中样的的乐趣,其替代系统是否允许,或者它是否仅仅是在功能强大的优化程序之前的一种内联函数的便捷方式)。如果实际上像C一样的语义已经成为起点,那感觉似乎更接近最终成为C ++模板的东西向宏的逻辑发展。但是,没有比语法更具体的证据了。 我们是否有任何记录说明为何采用这种方式设计,或者创作者的影响是什么?