从单片机基础到程序框架(全集 2019pdf版).pdf - 第344页
第七十九节: 各种变量常量的命名规范。 【79.1 命名规范的必要。 】 一个大型的 项目程序, 涉及到的变量常量 非常多 , 各种 变量常 量眼花缭乱, 名字不规范 就无法轻松 掌控 全局。 若能 一开始就遵 守特定的命名 规范, 则普 天之下,率土之滨, 都被你牢牢 地掌控在手 里, 天下 再也没 有难维护的 代码。 本节教给大家的是我多 年实践 所沿用的命名 规范和习惯, 它不是唯一绝对 的, 只是给大家 参考,大家 今后也可以在…

{
a=GetGrade(98); //输入 98 分,a 来接收判断的结果
b=GetGrade(88); //输入 88 分,b 来接收判断的结果
c=GetGrade(68); //输入 68 分,c 来接收判断的结果
View(a); //在电脑端观察 98 分的判断结果 a
View(b); //在电脑端观察 88 分的判断结果 b
View(c); //在电脑端观察 68 分的判断结果 c
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:0
十六进制:0
二进制:0
第 2 个数
十进制:1
十六进制:1
二进制:1
第 3 个数
十进制:2
十六进制:2
二进制:10
分析:
98 分的判断结果 a 为 0,0 代表“优”。
88 分的判断结果 b 为 1,1 代表“中”。
68 分的判断结果 c 为 2,2 代表“差”。
【78.4 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C 语言学习区域”的代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。

第七十九节: 各种变量常量的命名规范。
【79.1 命名规范的必要。】
一个大型的项目程序,涉及到的变量常量非常多,各种变量常量眼花缭乱,名字不规范就无法轻松掌控
全局。若能一开始就遵守特定的命名规范,则普天之下,率土之滨,都被你牢牢地掌控在手里,天下再也没
有难维护的代码。本节教给大家的是我多年实践所沿用的命名规范和习惯,它不是唯一绝对的,只是给大家
参考,大家今后也可以在自己的实践中慢慢总结出一套适合自己的命名规范和习惯。
【79.2 普通变量常量的命名规范和习惯。】
在 C51 编译器的平台下,unsigned char ,unsigned int ,unsigned long 三类常用的变量代表了“无符
号的 8 位,16 位,32 位”,这类型的变量前缀分别加“u8,u16,u32”来表示。但是这种类型的变量还分全局
变量和局部变量,为了有所区分,就在全局变量前加“G”来表示,不带“G”的就默认是局部变量。比如:
unsigned char Gu8Number; //Gu8 就代表全局的 8 位变量
unsigned int Gu16Number; //Gu16 就代表全局的 16 位变量
unsigned long Gu32Number; //Gu32 就代表全局的 32 位变量
void HanShu(unsigned char u8Data) //u8 就代表局部的 8 位变量
{
unsigned char u8Number; //u8 就代表局部的 8 位变量
unsigned int u16Number; //u16 就代表局部的 16 位变量
unsigned long u32Number; //u32 就代表局部的 32 位变量
}
全局变量和局部变量继续往下细分,还分“静态”和“非静态”,为了有所区分,就在前面增加“ES”
或“S”来表示,“ES”代表全局的静态变量,“S”代表局部的静态变量。比如:
static unsigned char ESu8Number; //ESu8 就代表全局的 8 位静态变量
static unsigned int ESu16Number; //ESu16 就代表全局的 16 位静态变量
static unsigned long ESu32Number; //ESu32 就代表全局的 32 位静态变量
void HanShu(unsigned char u8Data) //u8 就代表局部的 8 位变量
{
static unsigned char Su8Number; //Su8 就代表局部的 8 位静态变量
static unsigned int Su16Number; //Su16 就代表局部的 16 位静态变量
static unsigned long Su32Number; //Su32 就代表局部的 32 位静态变量
}
刚才讲的只是针对“变量”,如果是“常量”,则前缀加“C”来表示,不管是全局的常量还是局部的常
量,都统一用“C”来表示,不再刻意区分“全局常量”和“静态常量”,比如:
const unsigned char Cu8Number=1; //Cu8 就代表 8 位常量,不刻意区分“全局”和“局部”

const unsigned int Cu16Number=1; //Cu16 就代表 16 位常量,不刻意区分“全局”和“局部”
const unsigned long Cu32Number=1; //Cu32 就代表 32 位常量,不刻意区分“全局”和“局部”
void HanShu(unsigned char u8Data) //u8 就代表局部的 8 位变量
{
const unsigned char Cu8Number=1; //Cu8 就代表 8 位常量,不刻意区分“全局”和“局部”
const unsigned int Cu16Number=1; //Cu16 就代表 16 位常量,不刻意区分“全局”和“局部”
const unsigned long Cu32Number=1; //Cu32 就代表 32 位常量,不刻意区分“全局”和“局部”
}
【79.3 循环体变量的命名规范和习惯。】
循环体变量是一个很特定场合用的变量,为了突出它的特殊,这类变量在命名上用单个字母,可以不遵
守命名规范,这里的“不遵守命名规范”就是它的“命名规范”,颇有道家“无为就是有为”的韵味,它是
命名界的另类。比如:
unsigned char i; //超越了规则约束的循环体变量,用单个字母来表示。
unsigned long k; //超越了规则约束的循环体变量,用单个字母来表示。
void HanShu(unsigned char u8Data) //u8 就代表局部的 8 位变量
{
unsigned int c; //超越了规则约束的循环体变量,用单个字母来表示。
for(c=0;c<5;c++) //用在循环体的变量
{
u8Data=u8Data+1; //u8 就代表局部的 8 位变量
}
for(i=0;i<5;i++) //用在循环体的变量
{
u8Data=u8Data+1; //u8 就代表局部的 8 位变量
}
for(k=0;k<5;k++) //用在循环体的变量
{
u8Data=u8Data+1; //u8 就代表局部的 8 位变量
}
}
【79.4 数组的命名规范和习惯。】
数组有四种应用场合,一种是普通数组,一种是字符串,一种是表格,一种是信息。在命名上分别加入
后缀“Buffer,String,Table,Message”来区分,但是它们都是数组。比如: