[HWRelated]C语言中的底层技术

原创 2015年07月11日 00:18:33
   问题描述:C语言适合编写嵌入式软件,其中就涉及到许多C的底层技术,如移位操作、按位与或非等,还有与硬件平台相关的寄存器操作。以下是通用C语言底层技术学习的一点记录。
   结构中位域:这个功能用于节省存储空间,如一个布尔变量只需要一位即可,没必要声明成int型。除了单片机中的直接按位寻址操作,还可以用结构中的位域来处理,
struct file_data {
    unsigned int day: 5;   // 前5位用于day成员的存储
    unsigned int month: 4; // 紧接day后面4位用于month成员的存储
    unsigned int year: 7;  // 接着的7个bit用于year成员的存储
};
    位域的类型建议使用unsigned int,signed int类型,使用int会引起二义性,一些编译器将位域的最高位作为符号位,而一些编译器不会。
   通常意义上位域没有地址,C语言不允许将&运算符用于位域。
    指针当作地址用:
BYTE *p;
p = (BYTE *)0x1000;
   volatile:通常用在指向易变内存空间的指针的声明中,防止编译器优化只读取易变空间一次值。
版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言中*和&的区别-代码实现说明

*是指针运算符,可以表示一个变量是指针类型;也可以表示一个指针变量的所指向的存储单元,可以获取某个地址存储的值。 &是取地址符号,既取得某一个变量的地址 int *p=&a; 或 int *p; p...
  • qq_20366761
  • qq_20366761
  • 2016年10月23日 19:51
  • 897

关于C语言中 || 和 &&的用法

||是逻辑或,例子如下 1 2 3 4 5 6 //表达式1||表达式2 //如果表达式1是true或者表达式2是true,...
  • Dy_1748204009
  • Dy_1748204009
  • 2016年12月13日 11:57
  • 4847

C语言中#和##的用法

今天在学习Uboot的时候遇到cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage}这条语句。...
  • shy19910509
  • shy19910509
  • 2014年12月19日 17:03
  • 4347

C语言中<>和“”有什么区别

例如你使用的是TurboC include 代表编译时直接在TurboC软件设置指定的路径(默认是TurboC所在文件夹下的include文件夹)中寻找里面是否有stdlib.h的库文件。如果有,直...
  • huayutiancheng
  • huayutiancheng
  • 2016年08月28日 19:53
  • 1368

C语言中<>和“”的区别

例如你使用的是TurboC include 代表编译时直接在TurboC软件设置指定的路径(默认是TurboC所在文件夹下的include文件夹)中寻找里面是否有stdlib.h的库文件。如果有,直...
  • xieyihua1994
  • xieyihua1994
  • 2016年09月29日 21:21
  • 1610

c语言中常用函数

memsetvoid *memset(void *s, int ch, size_t n);函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch...
  • xinhunhai
  • xinhunhai
  • 2016年10月20日 10:58
  • 76

C语言中反斜杠的作用

反斜杠起到换行作用,用于宏定义和字符串换行。其中宏定义中使用居多。如果一行代码有很多元素,导致太长影响阅读,可以通过在结尾加\的方式,实现换行,编译时会忽略\及其后的换行符,当做一行处理。1、在宏定义...
  • shanshangyouzhiyangM
  • shanshangyouzhiyangM
  • 2016年10月26日 10:28
  • 2991

C语言中 ^的用法

a1 = 0x01;    //0000 0001 a2 = 0x00;    //0000 0000 a3 = 0x03;    //0000 0011 a4 = 0x02;    //000...
  • azhangyi188
  • azhangyi188
  • 2013年06月21日 16:04
  • 1470

C语言中 -> 是什么意思?

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据...
  • littesss
  • littesss
  • 2017年05月04日 20:52
  • 22119

c语言中的&的用法

c语言中的&,&&的用法
  • jackcily
  • jackcily
  • 2017年03月16日 23:04
  • 7911
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[HWRelated]C语言中的底层技术
举报原因:
原因补充:

(最多只允许输入30个字)