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

A. *_* K. 1 c++ perl g++

为了编译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
     }
   }
Run Code Online (Sandbox Code Playgroud)

那应该是什么东西

cni*_*tar 6

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

perlvar

$?

最后一个管道关闭,反引号(``)命令,成功调用wait()或waitpid()或来自system()操作符返回的状态.

子进程的退出值确实如此 ($?>> 8)

所以你应该检查是否g++返回0(成功)或non-zero.

if ($? >> 8) {
    /* Error? */
}
Run Code Online (Sandbox Code Playgroud)