引言
我们在用 C++ 写 ROS 代码的时候每次都会写下面这几个必须项,是否有时候会有疑问为什么要这样写?下面我将从 C++ 和 ROS 的两个角度分别去解释这些。
int main(int argc, char *argv[]) { ros::init(argc,argv,"节点名称"); ros::NodeHandle n; return 0; }
一、先不管 ROS:这是「标准 C++」里的 main
1. int main(int argc, char* argv[]) 是什么?
这是 程序的入口函数,操作系统在启动程序时:
- 自动调用 main
- 自动传入参数
- 自动接收返回值
int main(int argc, char* argv[])
不是你在'创建变量',而是 操作系统帮你填好的参数。
2. argc 是什么?
argument count(参数个数)
int argc
表示 命令行参数的数量
注意:
- 至少是 1
- 第 0 个参数永远是 程序本身的名字
例子:
- 程序名:
./demo - 参数列表:
123、abc
./demo 10 hello
那么:
argc == 3
3. argv 是什么?
argument vector(参数数组)
char* argv[]
本质是:
char** argv
在 C++ 中:char** argv = char* argv[]

