是否可以将函数中的 return 值作为 C 中主函数的 return 值传递?

Is it possible to pass a return value from a function as the return value of the main function in C?

我的程序(到目前为止)应该检查是否恰好有一个额外的命令行参数。如果不是这种情况,我的主要功能应该 return 1. 出于可读性原因,我决定将该检查外包给另一个功能。问题是,我不知道如何使主函数 return 与辅助函数具有相同的值。我的代码如下:

int main(int argc, char *argv[])
{
    checkNumberOfArguments(argc);
    return 0;
}

int checkNumberOfArguments(int argc)
{
    if (argc != 2)
    {
        printf("Error");
        return 1;
    }
    return 0;
}

如何以优雅的方式解决这个问题?

保存函数的return值。如果它是非零的,return它,否则继续。

int main(int argc, char *argv[])
{
    int rval = checkNumberOfArguments(argc);
    if (rval != 0) {
        return rval;
    }
    ...
    return 0;
}

从对 main 的初始调用返回被定义为“等同于使用 main 函数返回的值作为参数调用 exit 函数”(C 2018 5.1.2.2.3 1).因此,要获得与从初始调用 main 返回值 x 相同的效果,您需要做的就是调用 exit(x):

#include <stdlib.h> // To declare “exit”.

int checkNumberOfArguments(int argc)
{
    if (argc != 2)
    {
        printf("Error");
        exit(1);
    }
    return 0;
}