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

标签 c++ g++

int main()
{
    return -1;
}

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

谢谢。

最佳答案

(详细说明评论中已经暗示的内容)

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

source code (如OP所公开)被编译为machine code可执行文件 CPU 。 (通常,它是编译器运行的CPU,但也可能是另一个→ cross-compiling。)机器代码是二进制代码(普通用户很难阅读),这是唯一可以直接“解释”的代码“由CPU。

生成的可执行文件必须使用操作系统的特定功能(例如 fork()exec())来启动。 shell(例如bash)能够做到这一点,但它也可以被编程到其他程序中。

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

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

echo $?

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

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

关于c++ - 为什么g++返回-1时不返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55556526/

相关文章:

c++ - 捕捉以太网插入和拔出的瞬间

C++结构成员内存分配

c++ - 在 C++ 程序中连续运行两个 shell 命令

c++ - 代码块和 g++ 错误 "is private"

c++ - 在 VS2013 中使用 VS2008 (v90) C++ 工具集?

c++ - Berkeley DB,并发队列

c++ - 从旧书中学习c++

c++ - 对静态类成员的 undefined reference

c++ - 如何使用 -std=c++17(可选、任意、string_view、变体)在 g++ 6.2.0 中包含 C++ 17 header

c++ - 错误:无法在实现文件中绑定(bind)‘std::ostream