...
- 每个C文件开头都一段注释,标明文件的名称,作者,编写日期,文件描述与版本修改,下面是一个可以参考的例子:
代码块 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
/*=====================================================
* Copyright (C) 2014 All rights reserved.
*
* Filename:calculate.c
* Author:luqiang
* Date:2015/01/12
* Description:this is the description.
*
======================================================*/
|
- // todo
每个函数的定义处都需要写注释,表示该函数的名称,作者,作用,以及该函数的输入输出值。
- 程序的关键代码需要用注释说明
- 注意注释不要过多,很多时候,可以通过合理的命名让程序具有*自解释性*。
流程图
关于数字的指数形式,比如10e9,其类型默认为浮点型,也就是说如果要用这种形式进行整数运行,则必须要进行强制类型转换,如下:
代码块 |
---|
int n;
...
int a = n % (10e9 + 7); // 错误,10e9+7 最终类型是浮点型,不可以用于求余运算
int a = n % ((int)10e9 + 7) // 正确 |
待确认:结构体位域按1字节对齐,相邻位域不填充。
用宏可以实现的一些骚操作,比如下面这个宏:
代码块 |
---|
#define HI_APPCOMM_LOG_AND_RETURN_IF_FAIL(ret, errcode, errstring) \
do { \
if ((ret) != HI_SUCCESS) { \
MLOGE("[%s] failed[0x%08X]\n", (errstring), (ret)); \
return (errcode); \
} \
} while (0) |
这个宏可以处理常见的根据返回值退出的操作。
C语言实现memdump函数:
展开 | ||
---|---|---|
|
效果:
关于枚举值的变量类型,一般认为是int型,但某些嵌入式设备上,枚举值的类型实际是char,像下面这样的枚举值定义会出现问题:
代码块 |
---|
typedef enum State
{
StateA = 1 << 0,
StateB = 1 << 1,
StateC = 1 << 2,
...
StateX = 1 << 8 // 错误,超出char类型范围了
} STATE_E; |
对此,只能将枚举值转化为宏定义,如下:
代码块 |
---|
typedef unsigned int STATE_E;
#define StateA (1 << 0)
...
#define StateX (1 << 8) |
...