有没有办法从 C++ 中的主函数返回字符串?我在下面提到示例程序
string main(int argv, char* argc[])
{
.
.
return "sucess";
}
有没有办法从 C++ 中的主函数返回字符串?我在下面提到示例程序
string main(int argv, char* argc[])
{
.
.
return "sucess";
}
标准说:
3.6.1 主函数[basic.start.main]
2/ 实现不应预定义主要功能。该功能不得重载。它应该有一个 int 类型的返回类型,否则它的类型是实现定义的。所有实现都应允许
- () 的函数返回 int和
- (int, 指向 char 指针的指针)返回 int的函数
作为主要的类型。[...]
所以不,你必须返回一个int。
从您对帖子的评论中,您似乎只想在标准输出上输出一个字符串,然后您可以执行以下操作:
#include <iostream>
int main()
{
std::cout << "Success" << std::endl;
// No need for return 0; it is implicit in C++
}
正如 Kerrek SB 在评论中所说,return 0;
C++ 中隐含了 (标准§ 3.6.1 /5):
main
[...]如果控制在没有遇到语句的情况下到达末尾return
,效果就是执行return 0;
不,你不能,你必须总是返回一个int
. 更深入地思考,一个字符串对于shell程序来说是很难处理的:什么时候释放内存,返回什么样的字符串等等。)
但是,您可以使用or写入标准输出或标准错误。当您希望控制台应用程序输出类似字符串的数据时,这是正常的做法。std::cout
std::cerr
通常,您然后依靠您的 OS shell 将程序的标准输出定向到另一个程序的输入(unix 使用管道|
)。
不,它不符合标准。您必须返回一个 int 以便向调用者显示程序是如何退出的(很好,有错误?)。
你为什么要返回一个字符串?
您可能的意思是写入标准输出:
#include <cstdio>
int main()
{
// ...
std::puts("success");
} // no "return", success is implicit in C++
这是流程通信数据的标准方式之一,许多工具都适合以这种方式使用。
不,您不能在 C++ 中从 main 返回字符串,因为 main 函数的返回值是进程返回码(如果成功则为 0,如果进程失败则不是 0)。所以操作系统正在等待您的应用程序结束的正确信号。