设为首页
|
收藏本站
|
繁体中文
|
WAP
语音芯片
|
语音IC
|
方案开发
|
语音识别芯片
|
单片机开发
|
语音
|
单片机等开发
|
TTS芯片
强国首页
产品中心
成功案例
公司公告
下载中心
新闻资讯
关于我们
联系我们
招贤纳士
新闻资讯
公司公告
公司动态
业界资讯
应用案例
联系方式
深圳市强国科技开发有限公司
地 址:深圳市宝安区桃花源科技创新园第二分园1栋410
电 话:0755-29127866
传 真:0755-29127866
邮 编:518102
Email:
sale@126.com
工程 :
rd-ycz@126.com
网 址:
首页
当前位置:
强国首页
>
新闻资讯
>
公司动态
公司动态
语音芯片C语言编程规范
/*****************************************************************************/
#ifndef
_UNIHEADER_H_
#define
_UNIHEADER_H_
#pragma once
#include <ctype.h>
#include <io.h>
// eof()
#include <iostream.h>
#include <limits.h>
// INT_MAX 等
#include <malloc.h>
// malloc() 等
#include <math.h>
// floor(), ceil(), abs()
#include <process.h>
// exit()
#include <stdio.h>
// EOF(=^Z 或 F6), NULL
#include <stdlib.h>
// atoi() 等
#include <string.h>
/*****************************************************************************/
/*
*/
/*
标识符命名基本规则(根据中兴公司 C/C++ 编程规范)
*/
/*
*/
/* ------------------------------------------------------------------------- */
/*
*/
/* 1. 标识符要采用英文单词或其组合,便于记忆和阅读
*/
/*
切忌使用汉语拼音来命名。
*/
/*
*/
/*
说明:标识符应当直观且可以拼读,可望文知义,避免使人产生误解。
*/
/*
程序中的英文单词一般不要太复杂,用词应当准确。
*/
/*
*/
/* 2. 标识符只能由26个英文字母,10个数字,及下划线的一个子集来组成,
*/
/*
并严格禁止使用连续的下划线,
*/
/*
下划线也不能出现在标识符头或结尾(预编译开关除外)。
*/
/*
*/
/*
说明:这样做的目的是为了使程序易读。
*/
/*
因为 variable_name 和 variable__name 很难区分,
*/
*
下划线符号'_'若出现在标识符头或结尾,
*/
/*
容易与不带下划线'_'的标识符混淆。
*/
/*
*/
/* 3. 标识符的命名应当符合"min-length && max-information"原则。
*/
/*
*/
/*
说明:较短的单词可通过去掉"元音"形成缩写,
*/
/*
较长的单词可取单词的头几个字母形成缩写,
*/
/*
一些单词有大家公认的缩写,常用单词的缩写必须统一。
*/
/*
协议中的单词的缩写与协议保持一致。
*/
/*
对于某个系统使用的专用缩写应该在某处做统一说明。
*/
/*
*/
/*
正例:如下单词的缩写能够被大家认可:
*/
/*
temp
可缩写为 tmp
*/
/*
flag
可缩写为 flg
*/
/*
statistic 可缩写为 stat
*/
/*
increment 可缩写为 inc
*/
/*
message 可缩写为 msg
*/
/*
*/
/*
规定的常用缩写如下:
*/
/*
常用词
缩写
常用词
缩写
*/
/*
Argument
Arg
Maximum
Max
*/
/*
Buffer
Buf
Message
Msg
*/
/*
Clear
Clr
Minimum
Min
*/
/*
lock
Clk
Multiplex
Mux
*/
/*
Compare
Cmp
Operating System
OS
*/
/*
Configuration
Cfg
Overflow
Ovf
*/
/*
Context
Ctx
Parameter
Param
*/
/*
Delay
Dly
Pointer
Ptr
*/
/*
Device
Dev
Previous
Prev
*/
/*
Disable
Dis
Priority
Prio
*/
/*
Display
Disp
Read
Rd
*/
/*
Enable
En
Ready
Rdy
*/
/*
Error
Err
Register
Reg
*/
/*
Function
Fnct
Schedule
Sched
*/
/*
Hexadecimal
Hex
Semaphore
Sem
*/
/*
High Priority Task
HPT
Stack
Stk
*/
/*
I/O System
IOS
Synchronize
Sync
*/
/*
Initialize
Init
Timer
Tmr
*/
/*
Mailbox
Mbox
Trigger
Trig
*/
/*
Manager
Mgr
Write
Wr
*/
/*
*/
/* 4. 程序中不要出现仅靠大小写区分的相似的标识符。
*/
/*
*/
/* 5. 尽量避免名字中出现数字编号,如Value1、Value2等,除非逻辑上的确需要编号 */
/*
*/
/* 6. 常用变量类型前缀如下:
*/
/*
i
: int
b
: BOOL
*/
/*
f
: float
h
: HANDLE
*/
/*
d
: double
w
: unsigned short 或 WORD
*/
/*
c
: char
dw
: DWORD或 unsigned long
*/
/*
uc: unsigned char 或 BYTE
a
: 数组,array of TYPE
*/
/*
l
: long
str
: 字符串
*/
/*
p
: pointer
t
: 结构类型
*/
/*
*/
/*
以上前缀可以进一步组合。
*/
/*
在进行组合时,数组和指针类型的前缀指示符必须放在变量类型前缀的首位。
*/
/*
*/
/* 7. 完整的变量名应由"前缀" + "变量名主体"组成,
*/
/*
变量名的主体应当使用"名词"或者"形容词+名词",且首字母必须大写。
*/
/*
*/
/*
说明:各种前缀字符可能组合使用。在这种情况下,各前缀顺序为:
*/
/*
变量作用域前缀、变量类型前缀。
*/
/*
正例:
*/
/*
float g_fValue; // 类型为浮点数的全局变量
*/
/*
char *pcOldChar; // 类型为字符指针的局部变量
*/
/*
*/
/*****************************************************************************/
/*****************************************************************************/
/*
*/
/* 常量
*/
/*
*/
/* ------------------------------------------------------------------------- */
/*
*/
/* 1. 宏、常量名都要使用大写字母, 用下划线 '_' 分割单词。
*/
/*
预编译开关的定义使用下划线 '_' 开始。
*/
/*
*/
/*
正例:如 DISP_BUF_SIZE、MIN_VALUE、MAX_VALUE 等等。
*/
/*
*/
/*****************************************************************************/
// 函数结果状态代码
#define TRUE
1
// 布尔类型值
#define FALSE
0
// 布尔类型值
#define OK
1
// 函数类型值——函数结果状态代码
#define ERROR
0
// 函数类型值——函数结果状态代码
#define INFEASIBLE
-1
// 函数类型值——函数结果状态代码
//#define OVERFLOW
-2
// 因为在 math.h 中已定义 OVERFLOW 的值为 3,故注释掉此行
#define LIST_INIT_SIZE
10
// 顺序线性链表存储空间的初始分配量
#define LIST_INCREMENT
2
// 顺序线性链表存储空间的分配增量
/*****************************************************************************/
/*
*/
/* 宏定义
*/
/*
/* ------------------------------------------------------------------------- */
/*
*/
/* 1. 宏、常量名都要使用大写字母, 用下划线 '_' 分割单词。
*/
/*
预编译开关的定义使用下划线 '_' 开始。
*/
/*
*/
/*
正例:如 DISP_BUF_SIZE、MIN_VALUE、MAX_VALUE 等等。
*/
/*
*/
/*****************************************************************************/
/*****************************************************************************/
/*
*/
/* 数据类型
*/
/*
*/
/* ------------------------------------------------------------------------- */
/*
*/
/* 1. 结构名、联合名、枚举名由前缀T_ 开头。
*/
/*
*/
/* 2. 事件名由前缀EV_ 开头。
*/
/*
*/
/* 3. 结构和联合必须被类型化。
*/
/*
*/
/*
正例:
*/
/*
typedef struct
*/
/*
{
*/
/*
char acName[NAME_SIZE];
*/
/*
WORD wScore;
*/
/*
} T_Student;
*/
/*
T_Student *ptStudent;
*/
/*
*/
/*****************************************************************************/
typedef int Status;
// Status 是函数的类型,其值是函数结果状态代码,如 OK 等
typedef int Boolean;
// Boolean 是布尔类型,其值是 TRUE 或 FALSE
/*
/* 定义抽象数据类型 ElemType(元素类型) 在本程序中为整型
/* 可以有如下抽象数据类型 ——
/* ElemType 是元素类型;
SElemType 是堆栈元素类型
/*
QElemType 是队列元素类型;
TElemType 是树元素类型
*/
typedef int ElemType;
/*
/* 定义抽象数据类型 ElemType(元素类型) 在本程序中为双精度型
/* 注意与 main() 中的内容呼应
/* 若 typedef char Elemtype; 时,对不同长度的字符串该如何处理?——本数据结构不再适用?
*/
// typedef double Elemtype;
/*
/* 给顺序线性链表加"注释"用的"标记性"结构体:
/* 链表存放始于何处?链表中当前有几个元素?链表最多能存放几个元素?
*/
typedef struct
{
ElemType *piElem;
// 链表空间基地址
ElemType iLength;
// 链表当前长度
ElemType iListSize;
// 给链表分配的当前存储空间(以 sizeof(ElemType) 为单位)
} T_SeqList;
// T_SeqList = Sequential List Structure:顺序线性链表结构体类型
/*****************************************************************************/
/*
*/
/* 类声明
*/
/*
*/
/* ------------------------------------------------------------------------- */
/*
*/
/* 1. 类名采用大小写结合的方法。
*/
/* 在构成类名的单词之间不用下划线,
*/
/* 类名在开头加上C,类的成员变量统一在前面加m_ 前缀。
*/
/*
*/
/*
说明:C++Builder中的类名在开头加T。
*/
/*
*/
/*
正例:
*/
/*
void Object::SetValue(int iWidth, int iHeight)
*/
/*
{
*/
/*
m_iWidth = iWidth;
*/
/*
m_iHeight = iHeight;
*/
/*
}
*/
/*
*/
*****************************************************************************/
/*
*/
/* 局部函数原型
*/
/*
*/
/* ------------------------------------------------------------------------- */
/*
*/
/* 1. 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
*/
/*
*/
/*
说明:下面是一些在软件中常用的反义词组。
*/
/*
add/remove;
begin/end;
create/destroy;
insert/delete
*/
/*
first/last;
get/release;
increment/decrement;
put/get
*/
/*
add/delete;
lock/unlock;
open/close;
min/max
*/
/*
old/new;
start/stop;
next/previous;
source/target
*/
/*
show/hide;
send/receive;
source/destination;
cut/paste
*/
/*
up/down
*/
/*
*/
/* 2. 函数名用大写字母开头的单词组合而成,
*/
/*
且应当使用"动词"或者"动词+名词"(动宾词组)。
*/
/*
*/
/*
说明:函数名力求清晰、明了,通过函数名就能够判断函数的主要功能。
*/
/*
函数名中不同意义字段之间不要用下划线连接,
*/
/*
而要把每个字段的首字母大写以示区分。
*/
/*
函数命名采用大小写字母结合的形式,但专有名词不受限制。
*/
/*
*/
/*****************************************************************************/
// (01)创:创建一个空的线性表
Status InitList(T_SeqList *t_pSList);
// t_SList = Sequential List Variant:
//
结构体型顺序线性链表变量
// (02)销:销毁线性表
Status DestroyList(T_SeqList *t_pSList);
// (03)清:清空线性表
Status ClearList(T_SeqList *t_pSList);
// (04)空:判断线性表是否为空
Status IsListEmpty(T_SeqList t_SList);
/ (06)值:返回线性表中某个元素的值
Status GetElem(T_SeqList t_SList, int i, ElemType *iElem);
// (07)位:返回线性表中第1个满足某种关系的元素的位序
Status LocateElem(T_SeqList t_SList, ElemType iElem, Status (*PolymorphizateLocate)(ElemType, ElemType));
// (08)前:返回线性表中某个元素的前驱元素
Status PriorElem(T_SeqList t_SList, ElemType iCurElem, ElemType *piPreElem);
// (09)后:返回线性表中某个元素的后继元素
Status NextElem(T_SeqList t_SList, ElemType iCurElem, ElemType *piNextElem);
// (10)插:在线性表中某个位置之前插入新的元素
Status InsertElem(T_SeqList *t_pSList, int i, ElemType iElem);
// (11)删:删除线性表中某个位置上的元素
Status DeleteElem(T_SeqList *t_pSList, int i, ElemType *piElem);
// (12)历:遍历线性表中所有的元素
Status TraverseList(T_SeqList t_SList, void (*PolymorphizateTraverse)(ElemType *));
// void (*Polymorphizate)(ElemType *) 中的 void (*Polymorphizate) 为多态函数
// 比较数据元素是否存在平方关系
Status CompareSquare(ElemType iElemA, ElemType iElemB);
// 输出线性表中的元素
void VisitElem(ElemType *);
// 将线性表中的元素加倍
void DoubleElem(ElemType *);
/product/82-cn.html
分享到:
点击次数:
更新时间:2015-04-27 09:03:24 【
打印此页
】 【
关闭
】
上一条:
深圳强国科技2015年五一放假安排
下一条:
语音芯片语言的编译原理