0

我想在某些行(模式)之后将一些文本插入到我的 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
    

所以最终代码将如下所示。

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 来做这件事。

谢谢~S

4

1 回答 1

0

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

另外这里是关于如何在代码块之后插入一行的解释(这将帮助您处理代码#include块),但我不确定如何修复该while语句。如果 while 语句在一行上,这很容易,但这很难保证。

于 2013-10-17T06:01:21.197 回答