是否可以将函数中的 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;
}
我的程序(到目前为止)应该检查是否恰好有一个额外的命令行参数。如果不是这种情况,我的主要功能应该 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;
}