C语言的进阶学习笔记

本文是关于STM32编程中C语言的深入学习笔记,涵盖了逻辑与位运算、条件编译指令如`#ifdef`、`typedef`的使用、结构体参数传递、头文件引用、`volatile`关键字、枚举(`enum`)以及C语言的存储类型(如`auto`、`register`、`static`和`extern`)。通过对这些知识点的讲解,有助于提升STM32开发中的C语言应用能力。

STM32编程中C语言学习

项目需要学习STM32中的一些函数的使用,但其中涉及到许多指针、结构、变量等等,虽然在学校的C语言基础课程中已经学习了一部分,但这一部分过于基础,所以针对性的又学习了算是进阶的知识点,这里主要参考这篇文章,以及学长发的文件中的学习笔记进行针对性的学习

https://www.cnblogs.com/lnleelove/p/9751804.html

逻辑运算以及位运算

与、或、非运算

  1. “|”: 或的符号,1|1=1、1|0=1、0|0=0,只要有1则为1;
  2. “&”: 与的符号,1|1=1、1|0=0、0|0=0,只要有0则为0;
  3. “~”: 非的符号, ~1=0、 ~0=1,等于取反;
  4. “^”: 异或的符号,两个位相同为0,相异为1;
    ** 位运算**
  5. “>>” 位左移,各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移);
  6. “<<” 位右移,各二进位全部左移若干位,高位丢弃,低位补0;

#ifdef 和 #ifndef

#ifdef 标识符
程序段1
#else
程序段2
#endif

**它的作用是:**当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
其中#else部分也可以没有,即:

#ifdef
程序段1
#denif

这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不
同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样
往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译:

#ifdef WINDOWS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值