硬汉嵌入式论坛

 找回密码
 立即注册
查看: 13223|回复: 19
收起左侧

安富莱C语言编码规范 5--变量、结构、常量、宏

  [复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2018-3-20 15:38:10 | 显示全部楼层 |阅读模式
安富莱C语言编码规范 5--变量、结构、常量、宏


1、为了方便书写及记忆,变量类型采用如下重定义:
  1. typedef unsigned char uint8_t;

  2. typedef unsigned short uint16_t;

  3. typedef unsigned long int uint32_t;

  4. typedef signed char int8_t;

  5. typedef signed short int16_t;

  6. typedef signed long int int32_t;

  7. #define __IO volatile
复制代码

2、常见类型的前缀
(1)对于一些常见类型的变量,应在其名字前标注表示其类型的前缀。前缀用小写字母表示。前缀的使用请参照下列表格中说明。
111.JPG
(2)对于几种变量类型组合,前缀可以迭加。


3、变量作用域的前缀
为了清晰的标识变量的作用域,减少发生命名冲突,应该在变量类型前缀之前再加上表示变量作用域的前缀,并在变量类型前缀和变量作用域前缀之间用下划线‘-’隔开。
具体的规则如下:
(1)对于全局变量(global variable),在其名称前加“g”和变量类型符号前缀。
  1. uint32_t g_ulParaWord;

  2. uint8_t g_ucByte;
复制代码
(2)对于静态变量(static variable),在其名称前加“s”和变量类型符号前缀。
  1. static uint32_t s_ulParaWord;

  2. static uint8_t s_ucByte;
复制代码
(3)函数内部等局部变量前不加作用域前缀。
(4)对于常量,当可能发生作用域和名字冲突问题时,以上几条规则对于常量同样适用。注意,虽然常量名的核心部分全部大写,但此时常量的前缀仍然用小写字母,以保持前缀的一致性。


4、对于结构体命名类型,表示类型的名字,所有名字以小写字母“tag”开头,之后每个英文单词的第一个字母大写(包括第一个单词的第一个字母),其他字母小写,结尾_T 标识。单词之间不使用下划线分隔,结构体变量以 t 开头。
  1. /* 结构体命名类型名 */

  2. typedef struct tagBillQuery_T

  3. {

  4. ...

  5. }BillQuery_T;

  6. /* 结构体变量定义 */

  7. BillQuery_T tBillQuery;

  8. 对于枚举定义全部采用大写,结尾_E 标识。

  9. typedef enum

  10. {

  11. KB_F1 = 0, /* F1 键代码 */

  12. KB_F2, /* F2 键代码 */

  13. KB_F3 /* F3 键代码 */

  14. }KEY_CODE_E;
复制代码

5、常量、宏、模版的名字应该全部大写。如果这些名字由多个单词组成,则单词之间用下划线分隔。
宏指所有用宏形式定义的名字,包括常量类和函数类;常量也包括枚举中的常量成员。
  1. #define LOG_BUF_SIZE 8000
复制代码

6、不推荐使用位域。

努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
发表于 2018-6-14 08:59:11 | 显示全部楼层
学习了,谢谢,准备打印成教材,组织部门内部人员学习参考
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2019-1-22 17:26:21 | 显示全部楼层
感谢。。。。。。。。。。。。。
回复

使用道具 举报

1

主题

103

回帖

106

积分

初级会员

积分
106
发表于 2019-4-18 09:49:01 | 显示全部楼层
要是做成了pdf就哈多了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-4-19 17:47:51 | 显示全部楼层
西点钟灵毓秀 发表于 2019-4-18 09:49
要是做成了pdf就哈多了

好的,后面整个PDF版本。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2019-8-15 15:56:00 | 显示全部楼层
学习了,我想把你们的规范用在我们公司上
回复

使用道具 举报

5

主题

132

回帖

147

积分

初级会员

积分
147
发表于 2019-11-4 10:37:14 | 显示全部楼层
为什么不推荐使用位域呀
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-11-4 11:54:57 | 显示全部楼层
无关风月 发表于 2019-11-4 10:37
为什么不推荐使用位域呀

现在推荐使用了,因为M3和M4支持了硬件位带操作。

STM32H7的FMC扩展IO使用位域操作更省事,使用M3和M4内核的芯片还可以自动编译成硬件方式
http://www.armbbs.cn/forum.php?m ... 4117&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2019-12-18 11:51:43 | 显示全部楼层
再次学习一下规范。
回复

使用道具 举报

6

主题

216

回帖

234

积分

高级会员

积分
234
发表于 2020-2-5 22:34:42 | 显示全部楼层
在次学习下安富莱编程规范
回复

使用道具 举报

3

主题

34

回帖

43

积分

新手上路

积分
43
发表于 2020-2-24 11:02:41 | 显示全部楼层
学习学习,现在有PDF版本了吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2020-2-24 11:08:33 | 显示全部楼层
zouw96 发表于 2020-2-24 11:02
学习学习,现在有PDF版本了吗

回头专门整理到PDF里面。
回复

使用道具 举报

5

主题

132

回帖

147

积分

初级会员

积分
147
发表于 2020-9-18 14:43:08 | 显示全部楼层
float类型的变量开头加f吗
double 加d吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2020-9-18 17:44:44 | 显示全部楼层
无关风月 发表于 2020-9-18 14:43
float类型的变量开头加f吗
double 加d吗

不用,不加f的话,就按双精度计算。
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2023-10-25 08:06:20 | 显示全部楼层
硬汉大佬, 这部分有PDF文档吗??
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2023-10-25 08:06:26 | 显示全部楼层
硬汉大佬, 这部分有PDF文档吗??
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2023-10-25 08:11:42 | 显示全部楼层
硬汉大佬, 这部分有PDF文档吗??
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2023-10-25 08:11:45 | 显示全部楼层
硬汉大佬, 这部分有PDF文档吗??
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2023-10-25 08:11:50 | 显示全部楼层
硬汉大佬, 这部分有PDF文档吗??
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-10-25 16:04:51 | 显示全部楼层
hjhj7591418 发表于 2023-10-25 08:11
硬汉大佬, 这部分有PDF文档吗??

安富莱C语言规范PDF版
https://www.armbbs.cn/forum.php?mod=viewthread&tid=98500
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 15:43 , Processed in 0.247829 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表