c++ - "Proper"错误输入/行为时退出 C/C++ 程序的方法

标签 c++ c exit

快速提问.. 是否有一种“正确”的方法可以在无效输入时终止 C/C++ 程序?到目前为止,我在 C/C++ 的职业生涯涉及做这样的事情:

// C
#include <stdio.h>
int main(int argc, char **argv)
{
    if (argc != 3) {
        fprintf(stderr, "Error: Usage: %s [some param] [some param]\n", argv[0]);
        return 1;
    }

    /* rest of program */

    return 0;
}

在 C++ 中,它可以是 cerr 而不是 fprintf(srderr...)iostream 而不是 stdio.h

这是一种可行/可接受的方式,还是存在我不知道的标准?

谢谢!

最佳答案

基本约定是返回一个非零 值以指示退出时的某些错误情况。返回值 用于指示程序正常终止。

没有什么可以阻止您提出非零值列表并将它们与特定错误条件相关联,以便可以根据退出值识别特定错误。

例如,如果一个 shell 程序正在运行您的程序,那么它可以通过检查退出值来采取适当的操作。 stderr 的错误消息对我们很有用,但退出值可以编程方式使用并提供额外的灵 active 。

通常保留值 0 - 127 供您使用,其余供系统根据 Job crashes and exit codes 使用

关于c++ - "Proper"错误输入/行为时退出 C/C++ 程序的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973113/

相关文章:

c - while ((ch = getchar()) != EOF) 或提前声明 int ch = getchar()

php - 如何在出现错误时使用自定义 html 消息退出 php

c++ - 如何优雅地退出多线程应用程序?

c - 如何在我的 C 程序中捕获此 "This application has requested the Runtime to terminate it in an unusual way"错误?

c++ - 简单 qtest 失败并显示 'multiple definition of main'

c++ - 调用 std::variant 持有的所有类型的成员函数?

c++ - 异步接口(interface)托管 -> 非托管代码

c++ - 为什么 gcc 不为我决定内联或不内联这个功能?

c - 与 memset 链接销毁

任何人都可以提供有关猴子修补/ Hook Ruby 字符串 #{} 进行插值的指导吗?