gcc编译器中有任何选项可以在编译开始之前调用我的函数,所以我可以在文件中注入一些代码。
注意:宏无法解决我的问题,因为他们无法处理任何问题。
场景: -
@somthing1
class classname{
@somthing2
setsome(int val){
}
}
在这段代码中我想删除这些@符号并想要注入代码。我可以通过脚本来做,但如果gcc编译器提供某种方式,那么它对我来说非常有用。
提前致谢。
答案 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中间表示。您可以添加语句,删除语句,更改数据类型,无论您喜欢什么。