【问题标题】:How to get preprocessed output of header file alone?如何单独获取头文件的预处理输出?
【发布时间】:2012-03-15 06:31:28
【问题描述】:

我有一个头文件,我在其中使用过:

#if defined(LINUX) || defined(ANDROID)
 pthread_t gpthread;
 #endif

现在,我想在编译中通过 -DLINUX 后只获取头文件内容。有没有办法得到它?如果我使用:

#arm-linux-androideabi-g++ -E main.c > temp

然后输出让我有点困惑。

【问题讨论】:

  • 请解释一下您所说的“令人困惑”是什么意思?
  • 是什么阻止了您创建仅包含此头文件的 .c 文件并获得相同的预处理输出?我错过了什么吗?它应该为您提供所需的输出。 :)

标签: android linux c-preprocessor


【解决方案1】:

你可以只要求编译器只对头文件进行预处理:

arm-linux-androideabi-g++ -DLINUX -E foo.h > temp

【讨论】:

    【解决方案2】:

    您可能有兴趣将 cmets 保留在预处理输出中(以增强可读性)

     arm-linux-androideabi-g++ -DLINUX -C -E foo.h > foo.i
    

    然后查看(使用编辑器或寻呼机)foo.i

    生成的foo.i 包含以# 开头的行以传达位置信息。

    【讨论】:

    • 我使用这种方法来预处理 lua 和 luajit 上 ffi 的标头
    【解决方案3】:

    为什么不直接拨打cpp -D<something to be defined> <header file name>

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多