如何检测编译器何时发出错误
how to detect when compiler emits an error
要编译一个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使这更容易
相关文章:
- 为什么我的编译器无法弄清楚这种转换,它何时存在?
- 何时允许编译器优化复制构造函数
- MSVC 编译器/链接器何时合成标量/矢量删除析构函数
- RVO 何时保证应用/确实适用于 C++20 编译器
- C++编译器何时推断 no,除了方法?
- C++11:编译器何时将 {} 视为 std::initializer_list,何时不考虑?
- 是否有一个可视化 c++ 预定义的预处理器宏,让您知道编译器何时优化
- 编译器如何确定RVO何时安全
- 编译器何时需要访问库
- C 和 C++ 编译器何时将浮点数隐式转换或提升为双精度
- 数据类型对编译器来说何时意味着超过其存储空间
- 编译器何时将默认生成的构造函数标记为 noexcept
- 编译器何时不会创建默认构造函数
- 只有编译器的内存屏障(如std::atomic_signal_fence)何时有用
- 编译器如何知道何时不重新编译
- 编译器何时执行RVO ?
- 编译器何时可以静态地绑定对虚函数的调用?
- 编译器何时为派生类生成默认构造函数?
- 如何检测编译器何时发出错误
- 编译器何时在C++中移动/复制