【问题标题】:Implementing C preprocessor实现 C 预处理器
【发布时间】:2013-02-17 12:04:12
【问题描述】:

我正在实现一个 C 预处理器...

在 Wiki 上,我发现了它的以下功能...

  • 三字替换
  • 线拼接
  • 标记化
  • 宏扩展和指令处理
  • 文件包含

我的问题:

  • 我是否缺少任何功能?
  • 上述功能的正确执行顺序是什么? (即,在当今实用的预处理器之前做了什么?)

如果有人知道任何关于它的标准文档,请也提及。

【问题讨论】:

    标签: c c-preprocessor


    【解决方案1】:

    标准文档是 C 标准!官方版本是非免费的,但你可以找到足够准确的草稿,例如http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf 用于 C99。

    感兴趣的章节是 5.1.1.2(翻译阶段)和 6.10(预处理指令)。

    【讨论】:

    • 如果您正在使用它,最好也看看当前的标准 C11,而不仅仅是 C99。我认为变化不大,但你永远不知道。这将是“1570”而不是“1256”。
    【解决方案2】:

    您可能想查看 gcc 文档以了解他们如何实现它: http://gcc.gnu.org/onlinedocs/cpp/

    您还可以查看 gcc 的源代码: http://www.gnu.org/software/gcc/releases.html

    希望对你有帮助

    【讨论】:

    • 谢谢!你能告诉我在巨大的(我的意思是非常巨大的!)源代码文件夹中哪里可以找到 C 预处理器代码?
    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2018-03-08
    • 2010-09-07
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多