嵌入式17——位运算+预处理

本文详细介绍了位运算在计算机中的作用,如C语言的位操作符及其规则,并探讨了预处理指令,包括宏定义、头文件包含和条件编译。此外,还概述了GCC编译过程中的关键步骤,如预处理、编译和链接。
摘要由CSDN通过智能技术生成

一、位运算
计算机  0 1      1Byte --存储单位     1Byte = 8bits
软件控制硬件    编程 -->CPU-->寄存器(位)--硬件关联       C语言上 位运算 
& 运算规则:一假则假   --- 清0  
|  运算规则:一真则真     
~ 运算规则: 真假相对
^ 异或:  运算规则: 相同为0 不同为1    //同假异真
<<  左移 数值<<位数  //左移一位相当于乘以2 
>> 右移  数值>>位数

注意:
  看数据类型 
  有符号类型的数据,此时右移 最高位 补符号位 //算术右移 
  无符号类型的数据,此时右移 最高位 补0   //逻辑右移   

二、预处理

#include 
#define  N 10
预处理命令:  都是以 # 开头的 
  
编辑程序 --vi 
编译程序 --gcc   

--------------------------------------------------------------------------------------------------------
gcc的编译过程:

.c --- 机器代码 (0110)

预处理:   把程序中 # 开头的预处理命令 执行了 。
形成 --预处理文件 --源代码文件  gcc -E main.c -o main.i            .i 文件 进行 下一步 

编译: // 编译成汇编文件   gcc -S main.i -o main.s 
 
汇编 //将汇编文件 编译 成 目标文件(机器代码)   gcc -c mian.s -o main.o 
    
链接: 需要与用到相关库函数进行链接 ,生产最终可执行文件。
 sqrt       -lm  (math)

----------------------------------------------------------------------------------------------------------------------

预处理:
  1.宏定义
  2.头文件包含
  3.条件编译 
  
1.宏定义 
 (1).#define N 10 
   
   注意:
     a. 宏名 --标识符 
        符合标识符的定义规则。
        一般写成大写。
     b. 宏对应的值 是一个常量 
     
     N = 20;
     c. 只是做简单的文本的替换,不做计算 
     d. 宏的嵌套 
     e.最后不能写分号,因为分号也会作为宏值一部分,参与到文本的替换中
     f.#undef 终止宏的定义 
       后面的代码不能再用这个宏 
     
 (2).带参的宏 
     形式:
      #define 宏名(参数) 宏值 
    宏展开的副作用:  能加括号的都加上 。
 带参宏:
       文本替换 --- 有可能导致,
       源代码的体积变大 。
       快 --预处理阶段干 
       编译之后,对应的代码就已经在可执行代码中了
 函数:
       调用 ---- 只有一份代码
       会有时空开销。

 可以选择带参宏,功能小,代码量少。
 2.文件包含 
 #include <> 
 #include ""

eg:
 #include <stdio.h> 
<> //表示包含的文件,在编译器默认的搜索路径下 。
/usr/include     找的时候,直接到默认路径下寻找。

#include <test.txt>
#include "/usr/include/test.txt"
"" 先在当前目录下寻找,若没有再到默认目录下寻找。

怎么用?
系统相关的标准头文件,用<>
自己定义的 用 ""
总结:
1.宏定义 
2.文件包含 
3.条件编译 
 #if 0
 #endif 

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值