函数的参数不能留空,哪怕是不需要参数,也得加上void。
void fun(void){
}
库的.h和.c文件统一加载头文件ecbm_core.h。
#include "ecbm_core.h"//统一加载核心头文件
#if后面的判断,可能会涉及某些条件运算。括号又不要钱,多使用括号来使条件清晰。为了统一观感,即使只有一个条件也要加括号。
#if (ECBM_ADC_LIB_EN) //检查本库有没有被使能
使能类的宏定义,介于可能是某个寄存器的某一位,所以定义非0值为使能打开,0为使能关闭。
//<q>ADC库
//<i>该库提供了关于STC8的硬件ADC相关操作函数。
#define ECBM_ADC_LIB_EN (0)
宏定义一律大写,变量名和函数名一律小写。名字直接可以用下划线连接。
#define ECBM_ADC_LIB_EN (0)//宏定义大写。
float xdata adc_ch15;//变名量小写。
void fun(void);//程序名小写。
库使用的变量都应该保持如下的规则命名。非库的代码可以不遵守这条规定。
[库名]_[功能/作用]_[类型标志]
类型标志又可分为【作用域】【符号】【类型】
作用域有
g:global的首字母。指全局变量,没有这个标志就是局部变量。
d:data的首字母。涵盖了data区、idata区和bdata区的变量,没有就是按编译器默认。
x:xdata的首字母。指定为xdata区的变量,没有就是按编译器默认。
c:code的首字母。指定为code区的常量,没有就是按编译器默认。
符号有
u:unsigned的首字母。无符号型变量。
s:signed的首字母。有符号型变量。
类型有
b:bit的首字母,位变量。
8:8位变量,需要指定有没有符号。
16:16位变量,需要指定有没有符号。
32:32位变量,需要指定有没有符号。
f:float的首字母,浮点型变量,不管是单精度还是双精度都是这个。
s:struct的首字母,结构体变量,和上面有符号变量相比,可以通过后面有没有数字来判断。
a:数组。
由于库的使能开关是涵盖全部文件的,所以仅有这个#if不参与语句排序。其他的宏定义条件语句都需要和正常的语句进行排序。
变量的强转,需要将整个变量都括起来,防止keil抽风。
多变量的运算,多用括号来区分运算的先后顺序,括号是不要钱的,运算优先级搞错是会损失钱的。
图形化界面中的选项,在文字界面中,应当每一个选项占一行,方便以后修改。
全宏定义组成语句组,#号需要放在最前面,关键字按语句排序的进位来。而混搭的宏定义语句,为了括号插件能正确识别,#要紧贴语句。
数值型的宏定义都需要加括号。
对于.h文件中出现的函数声明,由于不占用flash空间,所以没必要加上宏定义。在.c文件里用宏定义控制编译就好了。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )