1. main函数

1.1. 返回值

C++ main函数的返回值必须是 int ,即整型类型。在大多数系统中,main 的返回值被用来指示状态,返回值 0 表示执行成功,非 0 的返回值含义由系统定义,通常用来指出错误类型。

Windows 系统下运行可执行文件(如 launch.exe)可以直接忽略其扩展名 .exe

launch

Unix 系统下需要使用全文件名,包括扩展名:

./a.out

访问 main 函数返回之后的方法依赖于系统。在 Windows 和 Unix 系统中,执行完一个程序之后,都可以通过 echo 命令来获取返回值。

Windows:

echo %ERRORLEVEL%

Unix:

echo $?

1.2. 处理命令行选项

main 函数的形参列表有两种形式:

int main(int argc, char *argv[]){ ... }

int main(int argc, char **argv){ ... }

第一种形参 *argv[] 中,argv 是一个数组,它的元素是指向 C 风格的字符串的指针; 第二种形参 **argv 中,argv 指向 char* 。 参数 argc 表示数组中字符串的数量。

当实参传给 main 函数之后,argv 的第一个元素指向程序的名字或者一个空字符串,接下来的元素依次传递命令行提供的实参。最后一个指针之后的元素值保证为 0。 例如,执行:

launch -d -o ofile data

launch 是可执行文件。那么, argc=5argv 包含如下的 C 风格字符串:

1argv[0] = "launch";
2argv[1] = "-d";
3argv[2] = "-o";
4argv[3] = "ofile";
5argv[4] = "data";
6argv[5] = "0";

Note

当使用 argv 中的实参时,实参是从 argv[1] 开始的; argv[0] 保存的是程序名,而非用户输入。

1.3. 参考资料

1.《C++ Primer 第5版 中文版》 Page 2, Page 197。