从零开始Rtklib解读篇-简单的编程理论和算法及结构分析(四)

首先我们来说一说VS常用的调试技巧,比较常用的内容我会写在下面。

1、断点。我就不细说了。

2、条件断点,在断点上右键,弹出的菜单可以选择条件设置,在找一些问题的时候会比较快一点。我有时会配合静态变量强行搜索到error发生前。

3、查看指针值,监视窗口输入,比如p,3 ,即可查看p指向的指针3个单元内的值

4、悬停查看。不说了,地球人都知道。

5、F5,F10,F11,ctrl++,ctrl+-等等。

6、转到定义。

7、箭头拖拽回去可以回去。然后step in找到错误。

8、待续。

我觉得比较有用的一些编程习惯。

1、做好注释。子函数要注明功能,输入和输出。功能的定义要有一定的复用性。

2、做好命名。命名是个技术活,不但要符合命名规范,而且要言之有物,让人一看大概能明白具体是做什么的,切记毫无意义的命名。

3、做好return。有分配就有free,而且通常而言,保持always return。

4、做好定义。最后都保持定义在前,有些编译器要求定义要统一在前。定义言之有物,条理清晰。

5、做好初始化。很重要。尤其是涉及到指针和地址复用的时候,切记注意。我个人认为如果开发的时候这种情况的参量在文档里稍微注明一下为好。

6、注意逻辑清晰。合理的模块设定,参量定义,执行流程都反映了逻辑,写的条理清晰,阅读迅速也是非常重要的。

7、注意效率。小程序的执行速度快,大程序就要考虑优化了。

8、待续。


接下来回到正题,补充一个小点。

1、malloc的使用

malloc被用于内存分配,这里的用法如下

if (!(rov_=(char *)malloc(strlen(rov)+1))) return 0;

含义为分配长度为strlen(rov)+1,type为char的内存,如果分配失败,return。

为什么+1?包括结尾通常的\0

2、Windows环境下,将某路径下的一个或多个*.*d文件批量转化为*.*o文件。

将crx2rnx.exe与*.*d文件放在同一路径下,运行cmd,进入该路径。

1、对单个文件,需要逐一运行crx2rnx,例如:

crx2rnx iqqe0640.12d

2、对多个文件,采用循环语句以提高效率,例如:

for %a in (*.*d) do crx2rnx.exe %a

根据rtklib解压的cmd根据不同的文件命令为

1、sprintf(cmd,"gzip -f -d -c \"%s\" > \"%s\"",tmpfile,uncfile);

2、sprintf(cmd,"crx2rnx < \"%s\" > \"%s\"",tmpfile,uncfile);

PS:分号里面的啦。Temfile和uncfile分别为原文件地址和解压地址

3、关于va_list, va_start和va_end.

Va_list给出了指向不定输入的指针,va_start&va_end给出了初始化读取和读取结束。

Vpfrintf和fprintf的区别在于一个是直接的格式和内容输出,一个是通过指针指向的内容控制。

所以对于内容可变的内容,最好还是通过va_start和va_end进行控制。

所以对于rtklib里的trace函数,首先它是一种根据level进行error输出的形式,具有一定的控制功能。另外因为声明中输入的不确定,这里调用了va_start,va_end进行处理。


Reference

1、http://blog.sciencenet.cn/blog-1217335-1010460.html

你可能感兴趣的:(RTKlib解读)