C规范编辑笔记(十)

news2024/11/13 15:25:51

往期文章:

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规范编辑笔记分享我们就到这里了,我们第十一篇见~

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/172246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis-Plus加密字段查询(密文检索)

MyBatis-Plus数据安全保护(加密解密)解释说明 1.字段加密后&#xff0c;数据库存储的字段内容为十六进制格式的密文2.条件查询时&#xff0c;若不对密文进行处理将无法匹配出想要的结果3.处理方式是借助SQL的AES_DECRYPT函数将密文解密后匹配4.SQL的解密函数只有AES_DECRYPT&am…

Java-流和IO

文章目录流InputStreamFileInputStream常用方法详情代码示例BufferInputStream常用方法详情代码示例OutputStreamFileOutputStream常用方法详情代码示例BufferedOutputStream常用方法详情代码示例ReadWriteJava的java.io库提供了IO接口&#xff0c;IO是以流为基础进行输入输出的…

云原生技能树-docker image 操作-练习篇

从Docker Hub 拉取已有镜像 一个Docker 镜像(image)包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务(Image Registry)里&#xff0c;默认的镜像仓库服务是Docker Hub。 用户可以制作、构建镜像、将镜像上传到镜像仓库服务&#xff0c;从而可以…

100w人在线的 弹幕 系统,是怎么架构的?

Shopee是东南亚及中国台湾地区的电商平台 。2015年于新加坡成立并设立总部&#xff0c;随后拓展至马来西亚、泰国、中国台湾地区、印度尼西亚、越南及菲律宾共七大市场。 Shopee拥有商品种类&#xff0c;包括电子消费品、家居、美容保健、母婴、服饰及健身器材等。 2022年第二…

【STM32学习】GPIO口的八种工作模式

GPIO口的八种工作模式一、参考资料二、施密特触发器1、电路2、电路计算一、参考资料 GPIO原理图详解 强烈建议观看&#xff1a;GPIO为什么这样设计&#xff1f; 施密特触发器—原理 施密特触发器—计算 什么是运放的虚短和虚断&#xff1f; 二、施密特触发器 关于GPIO的原理与…

JavaWeb-JSP

JavaWeb-JSP 1&#xff0c;JSP 概述 JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的网页技术&#xff0c;其中既可以定义 HTML、JS、CSS等静态内容&#xff0c;还可以定义 Java代码的动态内容&#xff0c;也就是 J…

设计模式 (二) 工厂模式 Java

目录 一、案例引出 二、简单工厂模式 二、抽象工厂 工厂设计模式&#xff0c;顾名思义类似一家工厂来制造各种产品&#xff0c;目的在于提高代码的可扩展性。 一、案例引出 通过接口来实现一类产品的功能&#xff0c;如目前有飞机、轮船、汽车这类产品的实体类&#xff0c…

Windows 安装 Android Studio

1、下载Android Studio https://r1—sn-2x3edn7s.gvt1.com/edgedl/android/studio/install/2022.1.1.19/android-studio-2022.1.1.19-windows.exe?cms_redirectyes&mhBy&mip175.146.144.124&mm28&mnsn-2x3edn7s&msnvh&mt1673878346&mvm&mvi1…

Pycharm社区版侧边栏没有database按钮

Pycharm有专业版和社区版这两个版本&#xff0c;普通人在大多数情况下我们都会选择社区版进行下载安装。为啥呢&#xff1f;因为社区版免费&#xff0c;专业版收费一般人用不起呀&#xff0c;而且社区版能够基本满足我们的日常需求&#xff08;但是这也就意味着社区版会比专业版…

LINUX学习之查看文件常用命令(四)

cat 命令描述 cat命令是一种用于查看文件内容的命令&#xff0c;它可以将文件的内容直接输出到标准输出 以下是cat命令常用参数&#xff1a; -A &#xff1a;显示所有字符&#xff0c;包括特殊字符-b &#xff1a;显示行号&#xff0c;仅针对非空白行-E &#xff1a;在每行…

【Java集合进阶】Collection 体系集合详解(ArrayList,LinkedList,HashSet,TreeSet...)

文章目录1. 概念2. 集合和数组的区别3. 集合的体系结构4. Collection父接口5. List 子接口6. List 实现类6.1 ArrayList 类6.2 Vector 类6.3 LinkedList 类6.4 ArrayList和LinkedList的区别7. Set 子接口8. Set 实现类8.1 HashSet 类8.2 TreeSet 类9. Collections 工具类Java编…

Vue9-数据代理

数据代理&#xff1a;通过一个对象代理对另一个对象中属性的操作&#xff08;读写&#xff09; 结论&#xff1a;Vue中通过vm&#xff08;实例对象&#xff09;来代理data中的所有数据 1.首先创建了一个vm对象 2.然后 vue就给vm准备了一些数据&#xff0c;当然也将data存放到…

Ubuntu下源码编译VirtualBox二 —— 源码编译(1)

先打个预防针&#xff1a;在Ubuntu下编译VirtualBox可以说相当复杂。 1. 编译指导 &#xff08;1&#xff09;进入技术文档页面 在VirtualBox主页&#xff08;Oracle VM VirtualBox&#xff09;中&#xff0c;鼠标左键点击“Documentation”下的“Technical docs”&#xff0…

【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

安装mitmproxy Https抓包证书 macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 前提 手机需要root&#xff0c;macbook上需要安装好mitmproxy macbook安装mitmproxy 需要完成下文1-3&#xff1a; https://github.com/doug-leith/cydia &…

【内排序 -- 八大排序】

目录&#xff1a;前言算法实现&#xff08;一&#xff09;插入排序1.直接插入排序2.希尔排序&#xff08;缩小增量排序&#xff09;&#xff08;二&#xff09;选择排序1.选择排序2.堆排序&#xff08;三&#xff09;交换排序冒泡排序快速排序1&#xff08;hoare版&#xff09;…

ARM S5PV210的SD卡启动实战

一、S5PV210的SD卡启动实战1 1、任务&#xff1a;大于16KB的bin文件使用 SD 卡启动 (1) 总体思路&#xff1a;将我们的代码分为 2 部分&#xff1a;第一部分 BL1 ≤ 16KB&#xff0c;第二部分为任意大小。 iROM 代码执行完成后&#xff0c;从 SD 卡启动会自动读取 BL1 到 SRA…

多核缓存一致性问题及解决方案MESI协议《深入浅出计算机组成原理》学习笔记 Day 4

系列文章目录 这是本周期内系列打卡文章的所有文章的目录 《Go 并发数据结构和算法实践》学习笔记 Day 1《Go 并发数据结构和算法实践》学习笔记 Day 2《说透芯片》学习笔记 Day 3 文章目录系列文章目录前言一、多核缓存一致性从何而来&#xff08;What&#xff09;二、怎么解…

学习TinyRenderer

1图形学图形学&#xff0c;简单来讲是将3D数据以各个视觉效果呈现在2D画布&#xff08;屏幕&#xff09;上&#xff1b;2 TinyRendererTinyRenderer从零开始实现了一个渲染器&#xff1b;TinyRenderer代码地址&#xff1a;https://github.com/ssloy/tinyrenderer内容介绍在&…

ThreeDXF预览DXF文件集成到vue项目中

由于网上资料都是html的&#xff0c;而自己需要嵌入到vue项目中&#xff0c;查找资料都是在index.html引入script脚本&#xff0c;在写到Vue文件中&#xff0c;但是我尝试过了&#xff0c;各种报错&#xff0c;找不到&#xff0c;window. 根本无法用&#xff0c;于是改注入main…

主动服务再升级!这个品牌引领智慧生活进入“深度体验”

文|智能相对论作者| 佘凯文1月15日&#xff0c;一档央视新闻的新概念科技节目《KU A &#xff01;酷啊未来 | 中国科技创新之夜》正式播出&#xff0c;来自中国科学院的多领域顶级科学家及许多科技企业、青年科研人员代表&#xff0c;共同分享了科技创新之路上的成果和突破。不…