4

每当我尝试在终端上使用 g++ 编译 c++ 代码时,我似乎无法让 g++ 输出任何错误消息,即使我确定在编译时应该捕获一些错误(例如语法、引用类型。 ..)。

我尝试了几种方法,例如这个make文件:

all:
    g++ -W -Wall -Werror main.cpp

它所做的只是输出:

make: *** [all] Error 1

这显然不是那么有用...

键入这样的内容:

g++ -W -Wall -Werror main.cpp 

直接到终端(没有make文件)根本不输出任何消息。

但是,这在编译时成功输出了所有错误:

cc main.cpp

我的问题是:如何让 g++ 输出错误消息,以便我知道在哪里更正我的代码?

4

4 回答 4

2

只是猜测-您的终端是否可能不打印stderr?比如说,它把它移动到一个日志文件或什么的?

尝试运行

g++ [whatever your arguments are] |& cat

(这是如果您使用 tcsh)或

g++ [whatever] 2>&1 | cat

如果你使用 bash。

于 2013-09-26T18:15:57.190 回答
0

尝试添加一行

#warning hello from here

(或者可能#error代替#warning)进入main.cc接近开头(可能作为第一行)。

如果

gcc -Wall -v main.cc

不要给出任何输出(特别是没有警告或错误),这意味着你gcc的坏了。也许输入/usr/bin/gcc而不是仅仅gcc

顺便说一句,Apple 不喜欢 GCC(因为他们不喜欢它的 GPLv3+ 许可证)。也许值得您花时间构建 [使用 eg ..../configure --program-suffix=-local] 并安装更新的 GCC(可能来自编译器的已发布源tar 球)。当前版本是4.8.1!

于 2013-09-26T18:05:43.383 回答
0

当其中一个任务返回非 0 状态时,Make 会报告错误。如果 g++ 默默地返回非 0 - 好吧,我想它以某种方式坏了。检查美元?在你运行 g++ 之后。另外,尝试 g++ --version - 它会报告任何内容吗?你也可以在调试器下运行它,只是为了确定。

于 2013-09-26T04:28:18.203 回答
0

尝试这样简单的事情:

g++ -c main.cpp
于 2013-09-26T03:53:39.917 回答