需要帮助将一些文本插入到我的c ++文件中

时间:2013-10-17 05:29:20

标签: bash

我想在某些行(模式)之后将一些文本插入到我的c ++文件中。以下是我的文件结构。

38 #include "stdlib.h"
39 #include "string.h"
40 #include "malloc.h"
41 

  ...

324 void DMProcMon::threadManagerMonitorThread(DMProcMon* dmProcMon)
325 {

    ...

338 while (dmState == DVProcMon::Active &&
339         DmManService::getDCMRestartingFlag() == 0){
340     try{

342         setupTimerVerification(dmProcMon);
343         setupSignalVerification(dmProcMon);
344
    ....

360 }

我想使用gcov添加代码覆盖宏。基本上我需要实现的是

  1. 在所有#include语句之后添加以下文字。

    45 #ifdef GCOV
    46 extern "C"
    47 void _gcov_flush();
    48 #endif
    
  2. 在threadManagerMonitorThread函数

    中的while语句后面添加以下文本
    #ifdef GCOV
    _gcov_flush();
    #endif
    
  3. 所以最终的代码会像下面那样松散。

    38 #include "stdlib.h"
    39 #include "string.h"
    40 #include "malloc.h"
    41 
    
    45 #ifdef GCOV
    46 _gcov_flush();
    47 #endif
    
      ...
    
    
    324 void DMProcMon::threadManagerMonitorThread(DMProcMon* dmProcMon)
    325 {
    
        ...
    
    338 while (dmState == DVProcMon::Active &&
    339         DmManService::getDCMRestartingFlag() == 0){
    340     try{
    
    342 #ifdef GCOV
    343 _gcov_flush();
    344 #endif
    
    346         setupTimerVerification(dmProcMon);
    347         setupSignalVerification(dmProcMon);
    348
        ....
    
    360 }
    

    这样做的最佳方法是什么。我想用bash或者pythyon来做这件事。

    由于 382 4

1 个答案:

答案 0 :(得分:0)

您可以使用sed在包含特定模式的行之前/之前插入一行。见:https://stackoverflow.com/a/11695086/2749648

同样here是关于如何在代码块之后插入一行的解释(这将帮助您使用#include块)但我不确定如何修复{{1声明。如果while语句在一行上,那将很容易,但这很难保证。