我想编写一个小工具,它接受一个C++程序(单个.cpp文件),找到"main"函数并向其添加2个函数调用,一个在开头,一个在最后.
如何才能做到这一点?我可以使用g ++的解析机制(或任何其他解析器)吗?
正如一些评论者的建议,让我提出我的想法作为答案:
所以基本上,这个想法是:
... original .cpp file ...
#include <yourHeader>
namespace {
SpecialClass specialClassInstance;
}
Run Code Online (Sandbox Code Playgroud)
在哪里SpecialClass是这样的:
class SpecialClass {
public:
SpecialClass() {
firstFunction();
}
~SpecialClass() {
secondFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您就不需要解析C++文件.由于您声明了一个全局变量,它的构造函数将在main启动之前运行,并且它的析构函数将在main返回之后运行.
缺点是您无法了解构建全局的时间与其他构建的相对顺序.因此,如果你需要保证firstFunction在整个程序中的其他任何构造函数之前调用它,那你就不走运了.
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |