代码之家  ›  专栏  ›  技术社区  ›  user9876

解析C++预处理器的IF语句

  •  4
  • user9876  · 技术社区  · 16 年前

    我已经用Python实现并使用了它,但它只正确地处理#ifdef和#ifndef语句。我需要添加对#if语句的支持,但是#if的语法要复杂得多。(例如,您可以使用&、| |、!、括号、关系运算符、算术等)。

    是否有任何现有的开源代码来解析和评估#if语句?(最好是Python)。

    5 回复  |  直到 8 年前
        1
  •  14
  •   Community Egal    7 年前

    KeithB said ,您可以让预处理器为您执行此操作。

    但是,如果您不想隐藏某些东西(例如,在有条件编译的代码中可能有您不想要或不允许提供给其他人的东西),那么一个简单得多的选择就是将适当的 #define 全局包含的标题中的指令。

    • 你的客户不需要担心 -D 选择权
    • 您不必在构建过程中有一些自定义步骤
    • 您给客户的代码没有潜在的半模糊
    • 您不会引入bug,因为该工具所做的事情与C预处理器略有不同
        2
  •  12
  •   BatchyX    16 年前

    1. 将所有#包含更改为@include
    2. 通过预处理器传递文件
        3
  •  8
  •   Paul Tomblin    16 年前

    下载“unifdef”,而不是重新发明轮子。如果您使用的是某种风格的Linux,您可能会找到它的软件包,否则它就打开了 FreshMeat

        4
  •  4
  •   Praetorian Luchian Grigore    12 年前
        5
  •  0
  •   unwind    16 年前

    GCC预处理器通常是一个独立程序,通常称为 cpp . 当然,这可能也会删除你的评论。