【问题标题】:In what is macro preprocessor implemented on its own?什么是宏预处理器自己实现的?
【发布时间】:2020-04-07 04:45:50
【问题描述】:

我目前正在阅读: enter link description here -gcc 是 C 预处理器文档。

但是即使我寻找其他文档,我仍然无法找到真正的宏实现。 A在/usr/lib/gcc/x86_64-linux-gnu/8/cc1中找到了一个exe:cc1文件,应该在编译的一个阶段(不知道是哪一个)使用这个:enter link description here 但是 language 实际上是预处理器实现的,我的意思是 - 它在历史上比 c 更老,所以我想是汇编程序或类似的。主要原因是,我如何通过自己的指令来实现或扩展它。有人建议在gcc 编译之前使用快速perl 程序为我执行此操作,但我仍然想知道在哪里可以找到在linux 中用c 实现的预处理器文件(如果存在于c source file 而不是elf file 或已经作为目标文件 - 正如cc1 所做的那样 - 那么我当然无法阅读实现。如果有人能提到宏预处理的那个阶段,我也会很高兴(不询问单独指令的解释,而是询问它的内部它的工作)。 我只是想看看它的肠子。

【问题讨论】:

  • 预处理器不是一个可以修改或扩展的独立应用程序。这将打破应用程序应在不同编译器中构建的原则。您可以按照建议自己做,但这样做有风险。
  • @john - 可以,但是如果需要扩展当前的 cpp,那为什么不呢?无论如何,这并不能回答如何实际修改 cpp。

标签: c macros c-preprocessor


【解决方案1】:

不管程序员决定什么。您可以使用任何语言实现预处理器。

您应该避免更改预处理器的行为方式,因为这会使您的程序不再是 C。

GCC 预处理器的源代码以及其他所有内容都可以在 GCC 存储库中找到,目前它是用 C 编写的。

【讨论】:

  • 那么我在哪里可以找到 gcc 存储库呢?在某处的文件系统或 github 中?
  • gcc.gnu.org/svn.html(来自 gcc 的“关于”页面:gcc.gnu.org/svn.html)。第一个 gcc 版本显然是在 1987 年(gcc.gnu.org/releases.html),所以它早于 git(和 svn)。
  • @Herdsman 有很多镜像。简单地访问 GCC 的网页就足够了 :) —— jgreve 链接的地方。您的 Linux 发行版通常还包含用于构建它们在您可以下载的包中提供的版本的确切源代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2014-10-01
  • 2012-12-12
  • 2011-05-14
  • 1970-01-01
相关资源
最近更新 更多