我想编写一个小工具,它接受一个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 次  |  
        
|   最近记录:  |