这是一个简单的(故意错误) c ++ hello world program(https://pastebin.com/Cehm9yLx)
#include <iostream>
using namespace std;
int main()
{
int a;
cout >> "Hello World! Welcome!" << endl;
cin << a;
}
但是当我使用gcc编译它时,它会在我的代码中显示100个错误而不是通常的1或2,其余所有错误都来自我无法控制的系统库。 这是gcc输出(https://pastebin.com/uTavsq43)。我甚至尝试添加 -isystem ,但它仍然给我错误。随着我的代码的大小增加,系统错误也增加,因此我很难找到我的问题。我尝试了ubuntu 17.10和solus(两者都带有 gcc 7.2 ),两者都有同样的问题。任何帮助将不胜感激。谢谢。 这里也是我使用的简单makefile。 (https://pastebin.com/v5Zk4M25)
答案 0 :(得分:0)
当gcc(或clang)发出错误时,它会对stderr发出错误。
您会注意到错误消息中包含&#34;错误:&#34;在它们中,带有注释的行有&#34;注意:&#34;在他们中间。
如果只有某种方法可以运行命令并过滤其stderr ......
$ gcc nod.cpp 2>&1 | grep "error:"
结果(在我的情况下):
nod.cpp:6:10: error: invalid operands to binary expression ('ostream' (aka 'basic_ostream<char>') and 'const char *')
nod.cpp:7:9: error: invalid operands to binary expression ('istream' (aka 'basic_istream<char>') and 'int')```
在bash-ese中,2>&1
表示&#34;将stderr重定向到stdout&#34;