gpt4 book ai didi

c - 为什么其他语言不支持类似于 C 及其后代的预处理器指令的东西?

转载 作者:太空狗 更新时间:2023-10-29 16:37:23 25 4
gpt4 key购买 nike


我想知道为什么其他语言不支持这个功能。据我所知,C/C++ 代码是平台相关的,因此要使其在各种平台上工作(编译和执行),是通过使用预处理器指令来实现的。除此之外,还有许多其他用途。就像您可以将所有调试 printf 放在 #if DEBUG ... #endif 中一样。因此,在进行发布构建时,这些代码行不会编译为二进制文件。
但在其他语言中,实现这一点(后面的部分)是困难的(或者可能是不可能的,我不确定)。所有代码都将编译成二进制文件,增加其大小。所以我的问题是“为什么 Java 或其他现代编译语言 不支持这种功能?”这允许您以非常方便的方式在二进制文件中包含或排除一些代码。

最佳答案

没有预处理器的主要语言通常有不同的、通常更简洁的方法来实现相同的效果。

拥有像 cpp 这样的文本预处理器是喜忧参半。由于 cpp 实际上不懂 C,它所做的只是将文本转换为其他文本。这会导致许多维护问题。以 C++ 为例,预处理器的许多用途已被明确弃用,以支持更好的功能,例如:

  • 对于常量,用const代替#define
  • 对于小函数,inline 而不是 #define

C++ 常见问题 calls macros evil并给出避免使用它们的多种理由。

关于c - 为什么其他语言不支持类似于 C 及其后代的预处理器指令的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com