一个可行的语言需要预处理器吗?

Pup*_*ppy 2 c++ language-design c-preprocessor

C++预处理器真的有用吗?即使在C#中,它仍然具有一些功能,但我一直在考虑完全放弃它用于假设的未来语言.我想有些像Java这样的语言在没有这样的东西的情况下存活下来.没有预处理步骤的语言是否具有竞争力和可行性?用没有预处理器的语言编写的程序采用哪些步骤来模拟它的功能,例如调试和发布代码的不同代码,以及这些步骤如何比较#ifdef DEBUG

Kos*_*Kos 5

实际上,大多数语言在没有预处理器的情况下处理得很好.我接着说,在没有多个功能部分的情况下,使用带有C/C++的预处理器的必要性.

例如:

  • 大多数语言不需要头文件并包含警卫,因为它们具有"模块"的概念.
  • 可以通过static ifs或类似机制轻松获得条件编译.
  • 代码重复几乎总是能够以比使用预处理器更清晰的方式减少:使用模板/泛型,反射系统等.

因此,我的结论是:对于大多数"功能",您可以使用预处理器和元编程,存在更明确的替代方案,使用起来更安全,更方便.

D编程语言作为一种编译的低级语言,是"如何提供通常通过预处理器完成的大多数功能,而无需实际预处理"的一个很好的例子 - 包括我提到的所有,加上字符串mixins和模板mixins,可能一些其他聪明的问题解决方案通常通过C/C++中的预处理来解决.