3

假设我想编写自己的预处理器。

所以我想要这样的东西:

所有 *.cpp 和 *.hpp (甚至包括的),在他们去 g++ 之前,他们去:

file --> my preprocessor -> g++

在 LLVM 框架中是否有一种简单的方法可以做到这一点?即添加一个阶段:“加载源文件后,在编译它之前通过这个程序管道它”?

谢谢!

4

2 回答 2

1

想法:

  1. 哈克cpp。您可以轻松地 ( -no-integrated-cpp)gcc调用您的版本,cpp即调用 real cpp
  2. 请求gcc -E,收集包含的文件名,使用您的程序读取所有文件,删除“#include”行。
  3. 进行预处理器构建步骤,将所有文件转换为中间形式。*.cppanon -> *.cpp -> *.o;*.hppon -> *.hpp;
  4. 放弃挂钩“#define”的想法。
  5. 创建 FUSE 文件系统,将过滤后的数据呈现给 gcc。

变体偏好:4,3,1,2,5。

于 2010-03-26T03:16:14.620 回答
0

是的,让 Clang 驱动程序做你想做的事情会很容易,尽管它不支持你想要的开箱即用。

于 2010-03-29T06:01:30.327 回答