rtklib 代码阅读与调试

Posted 者乎之类的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rtklib 代码阅读与调试相关的知识,希望对你有一定的参考价值。

新建空白项目,把src里的文件加入项目,然后
预处理命令里加
WIN32
_DEBUG
_CONSOLE
_LIB
_CRT_SECURE_NO_WARNINGS
ENAGLO
ENAQZS
TRACE

1.int main里的形参通过参数命令传入。

argc是参数个数,这个个数比你输入的实际个数多一个。例如输入-p 0 -m 15 -n -o out.pos 07590920.05o 30400920.05n时,argc=10,argv[0]是“。。。/…exe;
argv是传入的参数指针。
argv指向char * ,这里是char*数组,数组内存放参数的地址。


参数命令可查看manual。

2. 结构体赋初值

结构体中变量全是char类型,可以这样赋初值全为空。

3.输入文件指针,infile是指针数组,数组内每个元素是指针,最多8个输入文件。

输出文件指针

这样是可以的,如下情况2
****指针初始化
char 指针,也就是char * 类型。 其初始化本质上与其它变量初始化没有什么区别,就是赋予其一个初始化的值。
对于指针来说,在C语言中,就是一个地址。区分初始化情况,有四种表象:
1 初始化为空。即
char * str = NULL;
的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值。
2 初始化为常量字符串地址。
char * str = “test”;
常量字符串在运行时会被放在常量空间中,于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读取,不可写入。即str的值可以改,但是str指向的值是不可修改的。

注释的11行不可以。相当于const修饰char,没修饰指针。

3 初始化为变量地址。
这里的变量地址,包括全局变量,局部变量的地址,以及通过动态分配申请到的内存地址。
这种情况下,对指针指向的空间是可以修改的。
4 不做初始化。
这种情况在C语言中是允许的。如果为全局变量或静态局部变量,系统默认初始化为0值,即NULL。而对于局部变量,将是一个随机值。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错。****

4.sprintf指的是字符串格式化命令,strcmp字符串比较

函数声明为 int sprintf(char *string, char *format [,argument,…]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。

strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

即如果输入的命令是-k,那么执行resetsysopts()
这部分infile跟命令参数给出的.o文件连上了。

5.正文

借用s大佬论文里的图

以上是关于rtklib 代码阅读与调试的主要内容,如果未能解决你的问题,请参考以下文章

rtklib 代码阅读与调试

rtklib 代码阅读与调试

rtklib代码阅读与调试

RTKLIB-观测值文件

RTKLIB学习日志3—精密定位流程

idea 调试技巧1