C编码常见规则的总结以及Doxygen常见指令

C编码常见规则的总结以及Doxygen常见指令

1、嵌套的命名空间不需要首行缩进;一行代码只有一个命令或者一个变量的定义,变量定义的同时进行初始化。

2、Doxygen常见指令

(1)@file 文件的名称
(2)@auther 作者的名字
(3)@brief function或者class功能的介绍
(4)@copyright 版权的信息
(5)@date 代码最新修改时间
(6)@param 后面紧接着参数的名字,是关于参数的说明
(7)@var 引用了某个变量 @detail当前函数的详细描述
(8)@class引用了某个类
(9)@enum 引用了某个枚举
(10)@note 注解
(11)@warning 警告
(12)@exception 可能出现的异常信息
(13)@return 函数的返回结果
(14)@retval 描述返回值的类型
(15)@see function 参考函数的链接
(16)/** 内容*/
(17)中文问题:中文注释在文档中是乱码
解决:在expert中的INPUT选项页的INPUT_ENCODEING中填入“GB2312”,这样基于GB的文本编辑器生成的代码就可以正常使用了。

3、类可以将数据和函数封装在一起,其中使用public,protected,private表示哪些函数数据是共有的,受保护的或者私有的。

(1)以数据为中心,把private写在前面,public写在后面,重点是内部的数据结构
(2)以行为中心,先写public,再写private,注重对外提供什么样的接口。

4、头文件header file是函数声明,程序声明;源文件source file是程序的实现。一般会把对外公开常量(各个模块都可以使用)放在头文件,不对外公开的常量在源文件define。

5、头文件的引用

(1)防止头文件被重复引用,使用ifndef/define/endif 产生预处理,防止头文件被重复使用;
(2)#include<>标准头文件,标准库里面的;
(3)#include””非标准头文件,用户目录下的;
(4)头文件一般只放声明,不放定义;编译宏前面有下划线,普通宏前面不能有下划线;
(5)所有的API都由命名空间限定namespace。

6、变量一般采用小驼峰法命名,除了第一个单词,其他单词首字母大写;函数一般采用大驼峰法命名,所有单词首字母大写。全局变量一般在变量名字前面加q_,成员变量一般在前面加_。

7、一般不将布尔变量和false,true,0和1直接进行比较;一般不把float和double直接==或者!=,而是利用范围的判定 -精度<= float,float>=精度;指针变量一般直接和NULL作比较。一般都是常量在左,变量在右进行比较。避免不小心少输入一个"="字符,比较关系表达式变成赋值语句。

8、循环语句要注意内部语句的简洁,把逻辑判断放在外部进行;switch case记得添加break语句,如果不添加记得注释说明,最后要有一个default分支。少用goto语句。

9、函数

(1)参数要写完整,即使是void也要书写;
(2)如果参数是指针,且只作为输入使用,为了防止指针在函数体内部被修改我们会在指针前面加一个const;
(3)引用传递作为函数的形参输入,可以节省使用时候的内存分配。一般为了防止引用的值在函数内部被改变,会使用const & point定义变量取代原来的Point & point;
(4)一般函数的缺省值只在声明处,不在定义处。存在多个参数的时候,带缺省值一般在不带缺省值前面;
(5)Return不可以返回指向栈内存的指针或者引用。

10、assert是一个在debug版本定义的宏,会指出出现非法情况和错误情况的地方。错误情况不一样是引用assert地方出错了,也可能是调用者出错了。

11、引用和指针差别

(1)引用在创建的时候需要初始化,指针不需要;
(2)引用必须指向一个存储单元,指针可以指向空;
(3)引用初始化后。引用关系不可以被改变,指针任何时候都可以改变所指向对象。

12、内存管理

(1)静态存储区:全局变量以及static变量,运行的整个器件都存在;
(2)栈:系统自动分配自动释放,存储函数内部的局部变量,函数执行结束存储单元自动释放;
(3)堆:动态分配,程序要手动分配和释放,程序通过malloc或者new申请内存,free和delete释放内存;申请和释放要配对使用,申请之后要检查指针,防止指针值是NULL;释放之后,立即设置指针的值为NULL;对象消亡之后,确保内存被及时释放,否则造成内存泄漏。

上一篇:FreeBSD-13.0桌面配置(xfce)


下一篇:使用Ansible部署K8S服务