加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

有哪些不推荐使用的嵌入式 C 语言语法特性?

11/22 10:40
553
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

我是老温,一名热爱学习的嵌入式工程师关注我,一起变得更加优秀!

从事嵌入式软件开发的工程师朋友都知道,C 语言是一种非常灵活和强大的编程语言,尤其是在操作系统内核方面,C 语言更有着举足轻重的地位。

但是,随着 C 语言编程实践的发展和编程语言的演进,以往经常使用的一些 C 语言语法特性,逐渐开始被行业认为,不推荐使用。

主要因为,使用这些语法特性可能会导致代码可读性差、可维护性低、安全性问题或者效率低下。

以下是一些不建议使用的 C 语言语法特性:

1. 魔法数字(Magic Numbers)

直接在代码中使用具体的数值,如 if (x == 5) ,而不是定义为常量或枚举类型。这样做会导致该段代码语义含糊,维护该代码的程序员极有可能不知道该数字所表达的含义。

2. 全局变量

过度使用全局变量可能导致代码难以理解和维护,因为它们可以在程序的任何地方被修改,并且让各个模块存在高度的耦合,C 语言软件规模越大,越不建议使用全局变量。

嵌入式 C 语言,为什么全局变量越少越好?

3. 宏(Macros)

宏其实很有用,可以帮助程序员借助编译器的运算能力,在预处理阶段处理一些内容,但过量地使用宏定义,可能会导致代码阅读性变差,并且可能导致代码难以调试和容易出错,尤其是在宏展开时。

4. 指针运算

直接操作指针进行算术运算,如 p++ ,效率有时是比较高的,但一定一定要注意在进行指针运算时,指针的运算范围限定,一不小心使用不当,极有可能会造成内存访问错误。

5. goto语句

goto 语句可以跳转到程序的任意位置,这个跳转可以任意操作并且会忽略一大段逻辑结构代码,虽然很多错误处理都使用goto,但在业务逻辑设计时建议慎用,这会很容易破坏代码的结构化,使得代码难以阅读和维护。

6. 未使用的代码

代码中如果存在大量未使用的变量和函数,这可能会导致混淆和不必要的编译警告,并且会让后期的代码维护变得复杂和困难,建议代码提交的时候,把不必要的代码进行注释屏蔽或者直接删除。

7. C语言中的布尔类型滥用

很多 C 语言程序员喜欢用整型值 0 和 1 用作布尔值,用数字 0 表示 false,用数字 1 表示 true,而不是使用 _Bool 类型,这在以前旧的 C 语言语法里面很常见,但建议还是使用 bool 关键字进行变量定义。

8. 不安全的字符串操作

使用 strcpy 或 strcat 等不安全的字符串函数,这样可能会导致缓冲区溢出,因为这类字符串操作函数不会检查缓冲区的大小,它们会直接操作到字符串的 ‘’ 直至结束。

9. 不检查函数返回值

对于返回错误信息的函数,不检查其返回值可能导致程序在遇到错误时继续执行。我们有时候为了省事和方便,会有意无意地忽略函数或模块的返回值,但有时候,返回值包含了丰富的函数执行信息。

10. 不使用const关键字

对于不应该被修改的变量不使用 const 关键字,这可能导致意外修改和难以发现的错误。在变量传参或初始化定义时,对于一些不再被修改的变量,建议使用 const 关键字,告诉程序员和编译器,该变量在使用时不会再被修改。

这些只是一些简单的举例,但并不是绝对禁止使用。实际上,是否使用某些语法还应该取决于具体的编程环境和业务需求。

有些规范在当时可能是最佳的解决方案,但随着业务和技术的发展,更好的替代方案也可能随之出现.

在实际编程中,应该尽量遵循最佳的编程实践和代码规范,以提高代码的质量和可维护性。

相关推荐

电子产业图谱