lla2enu和static

本文介绍了两种方法来解决在经纬高坐标转换中确定起始点的问题:一是使用bool开关控制首次保存,二是利用C++的static关键字实现变量初始化。通过实例展示了静态变量的特性——仅在首次赋值后保持不变。

lla2enu和static


前言

在将经纬高转化为以起飞点为坐标原点的局部直角坐标系时,涉及确定起始点的问题,这里记录一下。


方法1:

直接加一个bool开关,只有在第一次从回调函数中订阅到gps信息的时候,才保存为起始点,并在之后关闭开关。

方法2:

static关键字
参考文章,言简意赅

自己试了一下:

#include <ros/ros.h>

using namespace std;

int test(int c)
{
  static int b=c;

  return b;
}
int main(int argc, char **argv)
{
  ros::init(argc, argv, "static");

  for (int i = 2; i < 5; ++i) {

    std::cout<<"test("<<i<<")="<<test(i)<<std::endl;

  }

  return 0;
}

运行结果如下:
在这里插入图片描述
只有第一次赋值成功了,如果后续不再对b进行修改,b的值将会保存第一次赋值时的结果。赋值语句static只运行了一次!!!!也就是第一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值