Bash 需要帮助在我的c+;中插入一些文本吗+;文件 我想在某些行(模式)之后,将一些文本插入到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 }

Bash 需要帮助在我的c+;中插入一些文本吗+;文件 我想在某些行(模式)之后,将一些文本插入到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 },bash,Bash,我想使用gcov添加代码覆盖率宏。所以基本上我需要实现的是 在所有#include语句后添加以下文本 45 #ifdef GCOV 46 extern "C" 47 void _gcov_flush(); 48 #endif 在threadmanagermonitorhread函数中的while语句后添加以下文本 #ifdef GCOV _gcov_flush(); #endif 最后的代码如下所示 38 #include "stdlib.h" 39 #include "string.h

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

  • 在所有#include语句后添加以下文本

    45 #ifdef GCOV
    46 extern "C"
    47 void _gcov_flush();
    48 #endif
    
  • 在threadmanagermonitorhread函数中的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

    您可以使用
    sed
    在包含特定图案的行之后/之前插入一行。请参见:


    还有关于如何在代码块后插入一行的说明(这将帮助您处理
    #include
    块),但我不确定如何修复
    while
    语句。如果while语句在一行上,这将很容易,但很难保证。

    您可能想学习如何使用
    ed
    请参见
    Awk
    应该是正确的工具,它通过正则表达式处理行,并为文本编辑提供强大的语言。您的第一个
    ifdef
    部分不包含在最终代码中。第二部分不是在a
    之后,而在a
    之后,而是在a
    尝试之后。这有什么关系?谢谢你的回答。但在我的情况下,因为这是一个C++文件,我想在特定函数范围内插入while语句,同时在while语句和内部尝试语句中插入。因此,这不是一个非常直接的替换或插入。