在编译之前解析文件

时间:2014-01-11 10:50:10

标签: c++ gcc

gcc编译器中有任何选项可以在编译开始之前调用我的函数,所以我可以在文件中注入一些代码。

注意:宏无法解决我的问题,因为他们无法处理任何问题。

场景: -

@somthing1
class classname{
  @somthing2
  setsome(int val){
  }
}

在这段代码中我想删除这些@符号并想要注入代码。我可以通过脚本来做,但如果gcc编译器提供某种方式,那么它对我来说非常有用。

提前致谢。

2 个答案:

答案 0 :(得分:1)

  • 第一个解决方案:makefile的预建阶段(如果你正在使用它)怎么样?

    CC=gcc
    
    all: pre-build main-build
    
    pre-build:
        @echo PRE
    
    main-build: target
    
    target: $(OBJS) 
          $(CC) -o ...
    
  • 第二个解决方案:如果您使用其他内容(如 CMake )来生成makefile,那么您可以使用CMake的API进行预构建操作和/或扩展您的makefile。 / p>

  • 第三个解决方案:通过 shell脚本来实现,像sed这样的东西也支持正则表达式,所以你应该设置一个相当不错的解析器。

  • 第四个解决方案:在编译阶段之前使用 python script。这可能有点矫枉过正,但确实应该满足任何解析需求。

答案 1 :(得分:0)

你需要的是一个gcc插件。在关于版本4.6之后,gcc支持使用在编译器的“中端”调用的用户编写的插件。您可以以任何方式操作源,但必须使用GIMPLE中间表示。您可以添加语句,删除语句,更改数据类型,无论您喜欢什么。