C代码风格

摘要:本文是C语言代码规范

1.摘要
本文是C语言代码规范

2.命名
2.1文件命名
app_user.c
app_user.h

2.2类型命名
2.2.1简单类型命名
typedef uint8_t fan_status_t;

2.2.2结构体和联合体命名
typedef struct fan_info{
    uint8_t gear;
    uint8_t dir;
}fan_info_t;

typedef struct device_info{
    uint8_t switch;
    fan_info_t fan;
}device_info_t;

device_info_t g_device_info;

2.2.3枚举命名
typedef enum pos_info{
    DIR_FIXED = 1,
    DIR_UAD,
    DIR_LAR,
}pos_info_t;

2.4变量命名
uint8_t fan_switch = 0;

2.5函数命名
void handle_fan_switch_cmd(int value);

2.6宏命名
#define FAN_UART_HEAD 0x55
#define PRODUCT_TEST_KEY "123456"

2.7前缀
int HILINK_PutCharState();

3.格式
3.1文本格式
.c、.h、Makefile    采用UTF-8 without BOM编码,Unix风格

3.2花括号
函数体左花括号另起一行,其他情况不用另起一行

3.3空格
1、逗号右侧有内容,逗号后有空格
2、分号右侧有内容,分号后有空格

3.4指针
1、指针声明或定义时,*靠近变量名称。*与修饰符间有空格
int *p;
const char *name;
void * const ptr;
void (*func)(void *arg);

3.5注释
采用/**/
/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
 * Description: HiLink产品适配实现源文件
 */

/* This pointer must NOT be NULL. */

4.头文件
4.1引号和尖括号
与源文件同路径文件夹时用引号,其他情况尖括号
#include <stdio.h>
#include "my_demo.h"

4.2包含次序
C语言标准库头文件
公用组件的头文件
本工程头文件
#include <stdio.h>
#include <pthread.h>
#include "my_demo.h"

4.3保护
头文件都应该使用define保护来防止被重复包含,格式为PATH_FILE_H
#ifndef HILINK_DEVICE_H
#define HILINK_DEVICE_H

/* 内容 */

#endif  /* HILINK_DEVICE_H*/

4.4函数、变量声明
在定义文件中定义全局变量, 比如A.cpp中定义全局变量 int aa;
在对应的头文件A.h中声明外部变量 extern int aa;
在使用aa变量的文件B.cpp中包含A.h;


4.5 extern "C"关键字
公用头文件中声明的函数和全局变量应该用extern "C"关键字修饰。
#include不使用extern "C"关键字修饰。
#define、类型定义不做要求。

#ifndef HILINK_DEVICE_H
#define HILINK_DEVICE_H

#ifdef __cplusplus
extern "C"{
#endif

#define FIRMWARE_VER "1.0.0"
#define SOFTWARE_VER "1.0.0"
#define HARDWARE_VER "1.0.0"

typedef struct {
    char svcType[32];  /* 服务类型,长度范围(0, 32] */
    char svcId[64];    /* 服务ID,长度范围(0, 64] */
} HILINK_SvcInfo;

int HILINK_PutCharState(const char *svcId, const char *payload, unsigned int len);

#ifdef __cplusplus
}
#endif

#endif  /* HILINK_DEVICE_H*/

5.其他
只在本编译单元使用的函数、全局变量应使用static修饰符。
在不影响功能的前提下,指针类型的函数参数尽量使用const修饰符。 
自增、自减运算符单独使用时采用后置形式。 
数组、结构体初始化列表、枚举类型定义中的最后一个成员之后应有逗号。
打印到终端的信息一律使用英文,以避免终端编码问题。
int offsets[] = {
    0,
    1,
};

参考:

物联网操作系统AliOS Things 3.3: 代码风格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值