C规范编辑笔记(十)

往期文章:

C规范编辑笔记(一)
C规范编辑笔记(二)
C规范编辑笔记(三)
C规范编辑笔记(四)
C规范编辑笔记(五)
C规范编辑笔记(六)
C规范编辑笔记(七)
C规范编辑笔记(八)
C规范编辑笔记(九)

正文:

又是新的一年,2023年的第一篇没想到隔了这么久才发哈哈,我们2023年第一篇就以我们连续更新的C规范编辑笔记开始吧!好了,话不多说,我们开始讲~

1、规则—每行代码只能有一条语句。有助于代码阅读和美观。我相信这个在读书时候,老师应该也讲过,每一行最多一句代码。大家可以从以下例子看出,一行代码看上去会很清爽。

Bad example:   
int32_t a; int64_t b;
a = 4; b = a / 6; printf("a = %d, b = %lld\n", a, b);
//虽然是可以这么写,但是不建议按照此写法,不利于后期看代码和维护

Good example:
//建议这样子写
int32_t a;
int64_t b;
a = 4;
b = a / 6;
printf("a = %d, b = %lld\n", a, b);

2、规则—不要使用浮点数进行相等或不相等的比较。例子如下:

Bad example:
float y = 0.1; /* 不能用简单的精度来表示 */
...
if (y == 0.1) /* 浮点值和0.1双精度值的比较*/
printf("equal\n");
else
if (y == 0.1f) /* 0.1f浮点值-在此检查条件 */
printf("equal2\n");
else printf("not equal\n");
...
for (float x = 0.1f; x <= 1.0f; x += 0.1f) { /* 该循环可能将进行9或10次,造成次数不确定*/
}

Good example:
double y = 0.1; 
...
for (uint count = 1; count <= 10; count ++) {
float x = count/10.0f; /* 在循环中精确传递10次 */
}

3、规则-不要在switch case的第一个标签之前插入语句。这个需要注意,在这些语法面前,我们需要按照它的规则来,就像不能在if和else if或者else之间添加语句,这样会造成错误,这个我也遇到过几次,因此这里再说明一下。

Bad example:
switch(var) {
int i = 0; /* 不允许这样做,这样就破坏了switch的结构 */
case VAL1:
    ...
    break;
case VAL2:
    ...
    break;
//同时这里还缺少了default:
}

Good example:    //规范的例子
int i = 0; 
switch(var) {
    case VAL1:
        ...
        break;
    case VAL2:
        ...
    case VAL3:
        ...
        break;
    default:
        ...
}

4、规则——定义的任何(非静态)函数必须有一个函数声明/原型。这个我们就不说明了,定义函数都需要一个函数原型/声明,而静态函数因为作用域只在自己定义的文件中,所以就不需要函数声明/原型。

5、没有参数的函数必须以 void 作为参数定义和声明。这个应该大部分小伙伴都知道或者见过吧,如果我们定义的函数没有参数或者返回类型的话,都是默认为void,当然需要显示表达出来,所以没有参数的函数必须以void作为参数定义和声明。比如如下:

Bad example:
/* header.h */
foo(uint8_t a); /* 缺少返回类型 */
uint32_t bar(uint16_t b);
void car(); /* 参数类型中缺少void表示函数不带参数 */

/* file.c */
foo(uint8_t a) {
    ...
}
uint32_t bar(int32_t b) 
{  /* 声明后,b必须是uint16_t ,与函数声明保持一致*/
    ...
}
void car() {
    ...
}

Good example:
/* header.h */
void foo(uint8_t a);
uint32_t bar(uint16_t b);
void car(void);
/* file.c */
void foo(uint8_t a) {
    ...
}
uint32_t bar(uint16_t b) {   //函数定义时候的参数需要与函数声明保持一致
    ...
}
void car(void) { //如函数无参数,应该填入void
    ...
}

好了,第十篇C规范编辑笔记分享我们就到这里了,我们第十一篇见~

在这里插入图片描述
本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值