【发布时间】:2011-05-28 21:37:00
【问题描述】:
我正在尝试找到获取 C 源文件的完整预处理源代码(我不需要其他 cmets 的#line 信息,只需要原始源代码)的最快方法。
我有以下仅包含 Windows 头文件 (mini.c) 的小测试程序:
#include <windows.h>
使用 Microsoft Visual Studio 2005,然后我运行以下命令:
cl /nologo /P mini.c
生成一个 2.5MB 的 mini.i 文件需要 6 秒;将其更改为
cl /nologo /EP mini.c > mini.i
(跳过 cmets 和 #line 信息)只需 0.5 秒即可写入 2.1MB 的输出。
是否有人知道在不使用预编译头文件的情况下进一步改进这一点的好技术?
我问的原因是我为 MSVC 编写了流行的 ccache 工具的变体。作为工作的一部分,程序需要计算预处理源代码(和其他一些东西)的哈希和。我想尽快完成。
也许有一个专用的预处理器二进制文件可用,或者其他命令行开关可能会有所帮助?
更新: 我刚想到一个想法:定义 WIN32_LEAN_AND_MEAN 宏以去除大量很少需要的代码。这将上述预处理器的运行速度提高了大约 3 倍。
【问题讨论】:
标签: visual-c++ c-preprocessor ccache