![](/img/trans.png)
[英]Why does the g++ 4.0 version of map<T>::erase(map::<T> iterator) not return a iterator?
[英]why does g++ doesn't return error when return -1
int main()
{
return -1;
}
以上面的简单代码为例,在main中,如果没有错误,则返回0; 如果有错误,返回-1。 但是为什么 g++ 在执行后不显示任何错误或消息? 而在 Xcode 中,它显示“程序以退出代码结束:255”,我可以看出一些错误。 或者问题是:在 g++ 中,我怎么能告诉 main 有一些错误并返回非零值?
谢谢。
(详细说明评论中已经暗示的内容)
C++ 是一种(通常)编译语言。 (虽然也有解释器,但带有 clang 或 gcc 的 XCode 不属于它们。)
源代码(由 OP 公开)被编译成CPU可执行的机器代码。 (通常,它是编译器运行的 CPU,但也可能用于另一个 CPU →交叉编译。)机器代码是二进制代码(普通用户几乎不可读),它是唯一可以直接“解释”的代码“由CPU。
生成的可执行文件必须使用操作系统的特定函数(例如fork()
和exec()
)启动。 shell(例如bash
)能够做到这一点,但它也可以被编程到其他程序中。
IDE (如 XCode 或 VisualStudio)提供用于编译和启动的命令(按钮)。 “播放”按钮检查自上次编译以来源代码是否已更改。 如果是,则再次编译并将结果存储为可执行文件。 (否则,编译可能会被跳过。)之后(假设没有任何编译错误)IDE fork()
sa 进程到exec()
可执行文件(即编译的程序)。
一旦程序终止,它就会返回一个可以在父进程(启动程序)中接收到的数字。 如果父进程是例如bash
则返回代码存储在一个变量中,之后可以检索该变量。
echo $?
打印最后终止的子进程的返回值。
IDE 可能会在某种日志窗口中报告返回值。 在 VisualStudio 中,它是输出窗口。 正如问题中描述的 OP,它在 XCode 中似乎相似。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.