为什么在返回-1时g ++不返回错误

时间:2019-04-07 07:16:51

标签: c++ g++

int main()
{
    return -1;
}

以上面的简单代码为例,在main中,如果没有错误,则返回0;否则,返回0。如果有错误,则返回-1。但是为什么g ++执行后不显示任何错误或消息?而在Xcode中,它显示“程序以退出代码结束:255”,我可以告诉我一些错误。也许问题是:在g ++中,我该如何告诉main出现一些错误并返回非零值?

谢谢。

1 个答案:

答案 0 :(得分:2)

(阐述评论中已经暗示的内容)

C ++是(通常)编译语言。 (尽管也存在解释器,但是带有clang或gcc的XCode不属于它们。)

source code(由OP公开)由machine code编译成CPU可执行文件。 (通常是编译器在其上运行的CPU,但是也可能是另一个编译器在运行{→{3}}。)机器代码是一个二进制代码(一般用户难以读取),它是唯一可以直接使用的代码。由CPU“解释”。

必须使用操作系统的特定功能(例如fork()exec())来启动产生的可执行文件。外壳程序(例如bash)可以执行此操作,但也可以将其编程到其他程序中。

cross-compiling(例如XCode或VisualStudio)提供用于编译和启动的命令(按钮)。 “播放”按钮检查自上次编译以来是否已更改源代码。如果是这样,它将再次编译并将结果存储为可执行文件。 (否则,可能会跳过编译。)然后(假设没有任何编译错误)IDE fork()exec()执行文件(即已编译程序)的进程。

一旦程序终止,它就会返回一个可以在父进程(启动程序)中接收的数字。如果父进程是bash,然后将返回代码存储在一个变量中,此变量随后可以检索。

echo $?

打印最后终止的子进程的返回值。

IDE可能会在某种日志窗口中报告返回的值。在VisualStudio中,它是“输出”窗口。正如问题中所描述的,OP在XCode中似乎很相似。