如何检测编译器何时发出错误

how to detect when compiler emits an error

本文关键字:编译器 何时发 出错 错误 检测 何检测      更新时间:2023-10-16

要编译一个C++项目,我想写一个perl脚本来编译我的程序,看看编译是否出错。如果编译器给出任何编译错误,我将需要执行其他任务。

perl脚本将是这样的:

   @l1 =  `find . -name '*.c'`;
   @l2 =  `find . -name '*.cpp'`;
   @l3 =  `find . -name '*.cc'`;
   my $err;
   my $FLAGS = "-DNDEBUG"   
   push(@l , @l1, @l2, @l3);
   chomp(@l);
   foreach (@l) {
     print "processing file $_ ...";
     $err = `g++ $_ $FLAGS`;
     if($err == something) {
       #do the needful
     }
   }

那么应该是什么呢?

您应该在g++...之后检查$?

perlvar

$?

最后一个管道close, backtick(' ')命令返回的状态,成功调用wait()或waitpid(),或从system()操作符调用。

子进程的退出值实际上是($?>> 8)

所以你应该检查g++返回的是0 (success)还是non-zero

if ($? >> 8) {
    /* Error? */
}

IPC::System::Simple/IPC::Run3使这更容易