我需要使用轻量级检测工具(比如使用一些现有的Python或C预处理器框架)在C函数的if条件中系统地插入语句:
例如,让foo成为C函数:
int foo(int x){
if (x>3)
return x;
}
我需要将其转换为
int foo(int x){
if (x>3){
print ("%d", x);
return x;
}
}
我尝试过使用LLVM,但它没有更好地与代码的其他部分集成。在这里,我更喜欢Python / C预处理器框架解决方案。谢谢你的想法。
答案 0 :(得分:1)
您可以考虑使用GCC MELT或GCC Python Plugin来自定义GCC编译器来转换其Gimple表示。这将是一个完整的解决方案,但我不确定它是否符合"轻量级" (因为你需要了解GCC内部的细节),但是Clang / LLVM方法也不是。您可能需要超过一周的工作时间(特别是要了解GCC或Clang / LLVM的内部)
顺便说一下,你的问题不像你认为的那么容易,因为int foobar(int x) { return (x>3)?(x*6):(x*x); }
包含条件。此外,您的原始功能完全等同于
int foo(int x){
while (x>3) // this while is done 0 or 1 time
return x;
}
很容易找到很多其他表达方式。
因此纯粹的句法方法永远不会完全奏效。因此,你不能希望得到某些东西" light"。
(我认为C代码检测从不轻量级问题)