从零开始Rtklib解读篇-简单的编程理论和算法及结构分析(三)
1. argc和argv
argc和argv中的arg指的是"参数",首先是一个计算提供的参数到程序,第二个是对字符串数组的指针
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
* argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
以此类推
2. 调试的层级
无 无调试信息
/Zd 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息
/Z7 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等
/Zi 创建一个程序库(PDB),包括类型信息和符号调试信息
/Zl 除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效
选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL
如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。
3. trace函数:使用方法和printf完全一致,他在output框中输出调试信息,release跳过
trace在控制中的应用:
1)在read文件的时候,首先通过trace给出read文件的path。
2)在read失败的时候,通过trace给出read失败的提示再return。
4. 关于分级控制:比如这里的pcv的read部分。
1)主函数首先有个trace,告诉大家读了什么文件,以read pcv开头。
2)主函数主要包括根据不同的文件类型进行了子函数进入的分类。有个if else的判定,最终返回了stat。子函数包括了readantex和readngspcv。
3)子函数的trace因此包括了readantex和antex pcv open error。
4)不同的trace的开头,可以看出问题的层级是不一样的。
5. 除了trace,还有其他的调试手段吗?
ASSERT 它接收一个表达式,如果这个表达式为TRUE,则无动作,否则中断当前程序执行。对于系统中出现这个宏 导致的中断,应该认为你的函数调用未能满足系统的调用此函数的前提条件。例如,对于一个还没有创建的窗口调用SetWindowText等。
VERIFY 和ASSERT功能类似,所不同的是,在Release版本中,ASSERT不计算输入的表达式的值,而VERIFY计算表达式的值。
6. 关于命名。引用google命名规范。
1)类首字母大写不包括下划线,比如class MyClass()
2)函数首字母小写,后面的单词大写,中间不包括下划线,比如int myFunction()
3)变量全小写,中间用下划线隔开
4)全局变量前加g_
5)常量全大写
6)类的成员变量用下划线结尾,函数的局部变量则不用下划线结尾。
7)初始化数组的时候度,指定赋值数组的时候,记得在最后一个元素后加一个 “,”,为了维护长数组。
8)(后略)
Reference:
1、http://blog.csdn.net/ndjk454164628/article/details/31061603调试技巧
2、http://blog.csdn.net/voidccc/article/details/37599203命名规范
3、https://baike.baidu.com/item/argc%20argv/10826112?fr=aladdinargc&argv
从零开始Rtklib解读篇-简单的编程理论和算法及结构分析(三)相关推荐
- 数据科学和机器学习中的优化理论与算法(下)
数据科学和机器学习中的优化理论与算法(下) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...
- 数据科学和机器学习中的优化理论与算法(上)
数据科学和机器学习中的优化理论与算法(上) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...
- # 数据科学和机器学习中的优化理论与算法(上)
本场 Chat 从基础知识的角度,用大白话对数据科学和机器学习中用到的最重要的优化理论和算法做个小结. 本场 Chat 内容如下: 优化中涉及的线性代数数学基础 优化理论中最常提到的一些定义.定理 求 ...
- Python并发编程理论篇
Python并发编程理论篇 前言 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识 ...
- 从零开始学习UCOSII操作系统13--系统移植理论篇
从零开始学习UCOSII操作系统13--系统移植理论篇 1.什么是系统移植? (1)UCOSII移植到不同的处理器上,所谓的移植就是将一个实时的内核能在其他的微处理器或者微控制器上运行. 为了方便移植 ...
- 如何编写高质量的 JS 函数(3) --函数式编程[理论篇]
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ 作者:杨昆 [编写高质量函数系列]中, < ...
- P4编程理论与实践——理论篇(转载)
P4编程理论与实践--理论篇 由于对SDN充满着兴趣,在学习了一段时间OpenFlow之后,一次偶然的机会接触到了P4.P4可以实现很多新的Idea,但是无奈于国内的实践资料太少了(有些资料似乎比较陈 ...
- 从零开始学习python编程-从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- 在java面向对象编程中_谈一谈你对封装_继承_多态概念的理解_Java新职篇:面向对象编程的3个原则是什么?...
原标题:Java新职篇:面向对象编程的3个原则是什么? 所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性.现在让我们来看一下它们的概念. 封装 封装(Encaps ...
最新文章
- 百度AI快车道—企业深度学习实战营,推荐系统主题专场即将开课
- 单片机控制24v电压_最全变频器控制端子接线方法和技巧
- windows睡眠(休眠)唤醒助手_一劳永逸解决WIN10所有睡眠问题
- eval a string with null_try-with-resources--JAVA成长之路
- eclipse 不能将maven jar包导入到tomcat中问题
- JQueryEasyUI学习笔记(十一)datagrid 右键菜单,冻结列
- map分组后取前10个_海关数据 | 图解前10个月外贸
- 关于函数指针调用C++非静态成员
- rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
- 30条架构原则:助你成为大牛架构师
- 数理统计-大厂笔试题
- SLAM 无人车融合 IMU 前与 融合 IMU 后的实测效果演示
- 矩阵分析(二):子空间之间的代数关系-无交连、正交与正交补
- SQL Serevr 2012 安装教程
- VMWare station 14密钥
- 关于文件的MIME类型
- LeetCode_69(x 的平方根 )
- 史上最全java项目开发编程规范
- 玉溪第一座智能变电站,造国际一流智能配电网,机器人来运维
- java 词典 分词_java分词中 用户自定义词典有什么要求